코드 흐름
- 두 Queue의 합을 구하고
- q1 의 sum 이 q2의 sum 보다 작다면
q1에 q2.poll() 값을 더하고
sum1 과 sum2를 최신화하여 다음 으로 넘어간다. - 위와같은 로직은 최대 이동 횟수 4*queue1의 갯수 가 될때까지 반복된다.
import java.util.*;
class Solution {
public long solution(int[] queue1, int[] queue2) {
int answer = -2;
long sum1=0,sum2=0;
Queue<Integer> q1 = new ArrayDeque<>();
Queue<Integer> q2 = new ArrayDeque<>();
for(int a : queue1){
sum1+=a;
q1.add(a);
}
for(int a : queue2){
sum2+=a;
q2.add(a);
}
if(sum1+sum2 % 2 ==1)
return -1;
long cnt = 0;
int num;
while(cnt <= queue1.length*4)
{
if(sum1 == sum2){
return cnt;
}
else if(sum1>sum2)
{
num = q1.poll();
sum1 -= num;
sum2 += num;
q2.add(num);
}
else{
num = q2.poll();
sum1 += num;
sum2 -= num;
q1.add(num);
}
cnt++;
}
return -1;
}
}
'Algorithm > Programers' 카테고리의 다른 글
Lv 2. 연속된 부분수열의 합 (0) | 2024.08.04 |
---|---|
Lv 2. 큰 수 만들기 (0) | 2024.08.03 |
Lv 2. 삼각달팽이 (0) | 2024.07.31 |
Lv 2. 소수찾기 (0) | 2024.07.30 |
Lv 2. 쿼드압축 후 갯수 세기 (0) | 2024.07.29 |