
-Code
import java.util.*;
class Solution {
public int solution(int[] queue1, int[] queue2) {
// 각 큐를 덱에 넣고 각 덱의 합 구하기
long sum1 = 0, sum2 = 0;
Deque<Integer> deq1 = new ArrayDeque<>();
for (int el : queue1) {
sum1 += el;
deq1.addLast(el);
}
Deque<Integer> deq2 = new ArrayDeque<>();
for (int el : queue2) {
sum2 += el;
deq2.addLast(el);
}
// 계산
int answer = 0;
// 최대 반복 횟수 지정
int loopCnt = (deq1.size() + deq2.size()) * 2;
while (answer < loopCnt) {
// 2개의 합이 같은 경우 반환
if (sum1 == sum2) {
return answer;
}
// 각 합의 크기에 따른 계산
if (sum1 > sum2) {
// 비어있으면 -1
if (deq1.isEmpty()) return -1;
// 1번 큐가 큰 경우 1번에서 pop
int pop = deq1.pollFirst();
sum1 -= pop;
sum2 += pop;
deq2.addLast(pop);
} else {
// 비어있으면 -1
if (deq2.isEmpty()) return -1;
// 2번 큐가 큰 경우 2번에서 pop
int pop = deq2.pollFirst();
sum1 += pop;
sum2 -= pop;
deq1.addLast(pop);
}
answer++;
}
return -1;
}
}
큐 계산을 편하게 하기위해서 2개의 덱을 선언하고 각 큐의 합을 저장하여 관리해 해결했습니다.
'알고리즘 문제 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 문자열 압축 (0) | 2026.05.14 |
|---|---|
| [프로그래머스/Java] 거리두기 확인하기 (0) | 2026.05.13 |
| [프로그래머스/Java] 3 x n 타일링 (0) | 2026.05.11 |
| [프로그래머스/Java] 두 원 사이의 정수 쌍 (0) | 2026.05.10 |
| [프로그래머스/Java] 점 찍기 (0) | 2026.05.09 |