엄지월드

PGM 118667 두 큐 합 같게 만들기 본문

알고리즘

PGM 118667 두 큐 합 같게 만들기

킨글 2022. 9. 13. 21:27

헷갈렸던 점

- 크게 어렵진 않았음. 넣고 빼는 것을 반복했을 때에 예외가 있을줄 알았는데 풀렸음

 

import java.util.*;

class Solution {
    public static int solution(int[] queue1, int[] queue2) {
        int answer = -2;
        Queue<Long> q1 = new LinkedList<>();
        Queue<Long> q2 = new LinkedList<>();
        long totalQ1 = 0;
        long totalQ2 = 0;
        // 큐에 데이터 넣기 
        for(int i=0; i<queue1.length; i++){
            totalQ1 += queue1[i];
            q1.add((long) queue1[i]);
        }
        for (int i = 0; i < queue2.length; i++) {
            totalQ2 += queue2[i];
            q2.add((long) queue2[i]);
        }

        int cnt = 0;
        long sum = totalQ1 + totalQ2;
        int length = queue1.length + queue2.length;
        long q2Num = -1;
        long q1Num = -1;
        // 합이 같아질 때까지 반복
        while(true){
            if(sum/2 > totalQ1){
                q2Num = q2.poll();
                q1.add(q2Num);
                totalQ1 += q2Num;
                cnt++;
            }else if(sum/2 < totalQ1){
                q1Num = q1.poll();
                q2.add(q1Num);
                totalQ1 -= q1Num;
                cnt++;
            }else if(sum/2 == totalQ1) break;
            
            if(cnt > queue1.length * 3){
                cnt = -1;
                break;
            }
        }
        
        answer = cnt;
        return answer;
    }
}

'알고리즘' 카테고리의 다른 글

PGM 92335 k진수에서 소수 개수 구하기  (0) 2022.09.14
PGM 118670 행렬과 연산  (0) 2022.09.13
42862 체육복  (1) 2022.09.11
72410 신규 아이디 추천  (0) 2022.09.09
68935 진법 뒤집기  (0) 2022.09.09
Comments