ALGORITHM/PROGRAMMERS
[프로그래머스] 두 큐 합 같게 만들기 (2022 KAKAO TECH INTERNSHIP)
0298
2022. 9. 18. 22:13
https://school.programmers.co.kr/learn/courses/30/lessons/118667
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2022-09-18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.util.*;
class Solution {
public int solution(int[] queue1, int[] queue2) {
int answer = 0;
long sum1 = Arrays.stream(queue1).sum();
long sum2 = Arrays.stream(queue2).sum();
long value = (sum1 + sum2) / 2;
Queue<Integer> q1 = new LinkedList<>();
Queue<Integer> q2 = new LinkedList<>();
for(int i = 0; i < queue1.length; i++) q1.add(queue1[i]);
for(int i = 0; i < queue2.length; i++) q2.add(queue2[i]);
boolean flag = false;
while(answer <= (queue1.length + queue2.length) + Math.max(queue1.length, queue2.length)) {
if(sum1 == sum2) {
flag = true;
break;
}
if(sum1 > value && !q1.isEmpty()) {
int valueQ1 = q1.poll();
q2.add(valueQ1);
sum1 -= valueQ1;
sum2 += valueQ1;
} else if (sum2 > value && !q2.isEmpty()){
int valueQ2 = q2.poll();
q1.add(valueQ2);
sum2 -= valueQ2;
sum1 += valueQ2;
}
answer++;
}
if(!flag) return -1;
return answer;
}
}
|
cs |
#문제풀이
각 큐를 번걸아가면서 순회하는데 걸리는 최솟값을 while문 조건에 걸어주었다.