Skip to content

Commit 62c6cae

Browse files
feat: 두 큐 합 같게 만들기 문제풀이
1 parent e93d2b5 commit 62c6cae

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//https://github.com/codeisneverodd/programmers-coding-test
2+
//더 좋은 풀이가 존재할 수 있습니다.
3+
//정답 1 - codeisneverodd
4+
function solution(queue1, queue2) {
5+
const getSum = arr => arr.reduce((a, c) => a + c, 0);
6+
7+
if (getSum([...queue1, ...queue2]) % 2 !== 0) return -1;
8+
9+
const queue = [...queue1, ...queue2, ...queue1, ...queue2];
10+
const maxCount = queue.length;
11+
const average = getSum(queue) / 4;
12+
let [currentSum, count, start, end] = [getSum(queue1), 0, 0, queue1.length];
13+
14+
const pop = () => {
15+
currentSum -= queue[start];
16+
start += 1;
17+
count += 1;
18+
};
19+
const insert = () => {
20+
currentSum += queue[end];
21+
end += 1;
22+
count += 1;
23+
};
24+
25+
while (count <= maxCount) {
26+
if (currentSum < average) insert();
27+
if (currentSum > average) pop();
28+
if (currentSum === average) return count;
29+
}
30+
return -1;
31+
}

0 commit comments

Comments
 (0)