알고리즘/프로그래머스

두 큐 합 같게 만들기

베리영young 2025. 9. 11. 23:16

사용 알고리즘: 그리디

사용 언어: java

 

import java.util.*;

class Solution {
    public int solution(int[] queue1, int[] queue2) {
        Queue<Integer> q1 = new ArrayDeque<>();
        Queue<Integer> q2 = new ArrayDeque<>();
        
        long sum1 = 0;
        long sum2 = 0;
        for(int i=0; i<queue1.length; i++) {
            sum1 += queue1[i];
            sum2 += queue2[i];
            q1.add(queue1[i]);
            q2.add(queue2[i]);
        }
        if((sum1+sum2) % 2 != 0) return -1;
        
        int answer = 0;
        while(true) {
            if(answer > 4*queue1.length ) {
                answer = -1;
                break;
            }
            
            if(sum1 == sum2) break;
            else if(sum1 > sum2) {
                int c = q1.poll();
                sum1 -= c;
                sum2 += c;
                q2.add(c);
            } else {
                int c = q2.poll();
                sum2 -= c;
                sum1 += c;
                q1.add(c);
            }
            answer++;
        }
        return answer;
    }
}

 

 

정수오버플로를 조심하자..

그리고 돌고 돌아 원상태가 될 때까지 몇 번 돌아야 되는지 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

오픈채팅방  (0) 2025.09.16
[1차] 뉴스 클러스터링  (1) 2025.09.15
다음 큰 숫자  (0) 2025.09.10
연속 부분 수열 합의 개수  (1) 2025.08.19
야근 지수  (6) 2025.08.19