문제
문제링크
접근
- 처음에 엄청난 탐색 알고리즘이 있을 것 같았지만, 막상 풀어보니 순서대로 값을 넣고 빼며 비교하며 답을 찾으면 되는 문제였다.
- 큐에 대한 이해가 기반이 되어야 한다.
- 계속 1번 테케가 실패라고 뜨길래 다른 사람의 글을 참고하였는데, 2배가 아닌 3배로 하면 해결이 된다는 문구에 그렇게 하였더니 통과되었다. 사실 아직까지도 그 이유를 정확히 모르겠당..
소스 코드
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
int[] queue1 = {3, 2, 7, 2};
int[] queue2 = {4, 6, 5, 1};
Solution sol = new Solution();
System.out.println("result : " + sol.solution(queue1, queue2));
}
}
class Solution {
public int solution(int[] queue1, int[] queue2) {
int length = queue1.length;
Queue<Integer> q1 = new LinkedList<>();
Queue<Integer> q2 = new LinkedList<>();
long sum1 = 0;
long sum2 = 0;
for(int i = 0; i < length; i++) {
sum1 += queue1[i];
q1.offer(queue1[i]);
sum2 += queue2[i];
q2.offer(queue2[i]);
}
int cnt = 0;
while (sum1 != sum2) {
if(cnt > length * 3) return -1;
cnt++;
int currNum = -1;
if (sum1 > sum2) {
currNum = q1.poll();
q2.offer(currNum);
sum1 -= currNum;
sum2 += currNum;
}
else {
currNum = q2.poll();
q1.offer(currNum);
sum1 += currNum;
sum2 -= currNum;
}
}
return cnt;
}
}