사용 알고리즘: 그리디
사용 언어: 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 |