-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdoublePrimeQueue.js
More file actions
42 lines (39 loc) · 1.24 KB
/
doublePrimeQueue.js
File metadata and controls
42 lines (39 loc) · 1.24 KB
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
38
39
40
41
42
// 문제 설명 (포스팅 완료)
// https://programmers.co.kr/learn/courses/30/lessons/42628
function solution(operations) {
var answer = [];
let heap = [];
operations.forEach((op) => {
if (op[0] == "I") {
let a = +op.split(' ')[1];
if (heap[0] && heap[0] < a) heap.unshift(a);
else heap.push(a);
}
if (op == "D 1") heap.shift();
if (op == "D -1") heap.splice(heap.indexOf(Math.min(...heap)), 1);
})
return heap.length ? [heap[0], heap[heap.indexOf(Math.min(...heap))]] : [0, 0];
}
// 다른 사람 풀이 해석
function solution(operations) {
// 값을 저장할 변수
var values = [];
for(var oper of operations) {
var opers = oper.split(' ');
switch(opers[0]) {
case 'I' :
// 값을 추가하고 정렬한다.
values.push(opers[1] * 1);
values.sort((l,r) => l - r);
break;
case 'D' :
// 최댓값 혹은 최솟값을 제거한다.
opers[1] === '1' ? values.pop() : values.shift();
break;
}
}
if(values.length) {
return [ values[values.length - 1], values[0] ]
}
return [0,0]
}