상세 컨텐츠

본문 제목

두 큐 합 같게 만들기 (2022 KAKAO TECH INTERNSHIP)

프로그래머스 코딩테스트 풀이

by 발발개발 2022. 8. 30. 10:49

본문

원본 : https://school.programmers.co.kr/learn/courses/30/lessons/118667

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

import java.util.*;

class Solution {
    public int solution(int[] queue1, int[] queue2) {
        Queue<Integer> q1 = new LinkedList<>();
        Queue<Integer> q2 = new LinkedList<>();
        long sum1 = 0;
        long sum2 = 0;
        int maxCnt = (queue1.length + queue2.length) * 2;

        for (int num : queue1) {
            sum1 += num;
            q1.add(num);
        }

        for (int num : queue2) {
            sum2 += num;
            q2.add(num);
        }

        long mid = (sum1 + sum2) / 2;
        int cnt  = 0;

        while (sum1 != mid) {
            if (cnt > maxCnt) {
                return -1;
            }

            if (sum1 < mid) {
                if (!q2.isEmpty()) {
                    sum1 += q2.peek();
                    sum2 -= q2.peek();
                    q1.add(q2.poll());
                }
            } else {
                if (!q1.isEmpty()) {
                    sum2 += q1.peek();
                    sum1 -= q1.peek();
                    q2.add(q1.poll());
                }
            }

            cnt++;
        }

        return cnt;
    }
}

관련글 더보기

댓글 영역