알고리즘/Lv2. 프로그래머스

[프로그래머스] 두 큐 합 같게 만들기 -java

signal시노 2023. 8. 29. 15:38

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/118667

 

프로그래머스

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

programmers.co.kr

 

import java.util.*;
class Solution {
    public long solution(int[] queue1, int[] queue2) {
        long answer = -1;
        Queue<Integer> realQ1=new LinkedList<>();
        Queue<Integer> realQ2=new LinkedList<>();
        int check=0;
        long q1=0;
        long q2=0;
        for(int i=0;i<queue1.length;i++){
            check+=queue1[i]+queue2[i];
            q1+=queue1[i];
            q2+=queue2[i];
            realQ1.offer(queue1[i]);
            realQ2.offer(queue2[i]);
        }
        if(check%2!=0)return (long)-1;
        
        int cnt=0;
        int end=0;
        while(q1!=q2){
            if(q1>q2){
                q1-=realQ1.peek();
                q2+=realQ1.peek();
                realQ2.offer(realQ1.poll());
                cnt++;
                
            } else if(q1<q2){
                q2-=realQ2.peek();
                q1+=realQ2.peek();
                realQ1.offer(realQ2.poll());
                cnt++;
            }
            if(realQ1.isEmpty()||realQ2.isEmpty()){
            return (long)-1;
        }
            end++;
            if(end>queue1.length*5)return (long)-1;
        }
        
        answer=cnt;
        return answer;
    }
}