https://school.programmers.co.kr/learn/courses/30/lessons/118667
두 큐 합이 같은 경우를 만들기 위해 몇 번의 작업이 필요한지를 구하는 문제
문제 그대로 두개의 큐를 만들고 현재 큐의 합을 나타내는 q1Sum, q2Sum이라는 변수를 이용하여 직접 이동시켜 정답이 나올 때까지 반복하였다
두 큐 합이 같을때까지 answer를 증가시켜 같아지는 순간의 answer값이 정답으로 출력되도록 하였다
import java.util.*;
class Solution {
public int solution(int[] queue1, int[] queue2) {
int answer = 0;
long q1Sum = 0;
long q2Sum = 0;
Queue<Integer> q1 = new LinkedList<>();
Queue<Integer> q2 = new LinkedList<>();
for (int i=0; i<queue1.length; i++) {
q1Sum += queue1[i];
q1.add(queue1[i]);
q2Sum += queue2[i];
q2.add(queue2[i]);
}
long sum = q1Sum + q2Sum;
long n = sum / 2;
if (sum%2==1) return -1;
while (answer < queue1.length*3) {
if (q1Sum == n) return answer;
if (q1Sum > n) {
int tmp = q1.poll();
q2.add(tmp);
q1Sum -= tmp;
q2Sum += tmp;
answer++;
} else {
int tmp = q2.poll();
q1.add(tmp);
q2Sum -= tmp;
q1Sum += tmp;
answer++;
}
}
return -1;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 혼자 놀기의 달인 (0) | 2024.01.31 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 할인 행사 (1) | 2024.01.14 |
[프로그래머스][JAVA]Lv. 2 - k진수에서 소수 개수 구하기 (0) | 2024.01.14 |
[프로그래머스][JAVA]Lv. 2 - n^2 배열 자르기 (0) | 2023.12.10 |
[프로그래머스][JAVA]Lv. 2 - 피로도 (0) | 2023.12.10 |