코딩테스트
[JS] 힙(Heap) > 이중우선순위큐
차차한
2022. 9. 21. 09:00
function solution(operations) {
var answer = [];
for(var i = 0; i < operations.length; i++){
var point = operations[i].slice(0,1);
var num = parseInt(operations[i].slice(2));
switch(point){
case "I" : answer.push(num);
break;
case "D" : if(num == 1){
answer.sort((a,b)=>b-a);
answer.shift();
}else{
answer.sort((a,b)=>a-b);
answer.shift();
}
break;
}
}
answer.sort((a,b)=>a-b);
return answer.length == 0 ? [0,0] : [answer[answer.length-1],answer[0]];
}
매개변수 배열의 길이만큼 반복을 돌리면서 주어진 조건을 처리했다.
변수 point에는 I 또는 D를 담고, num에는 숫자만 잘라내 담아줬다.
switch문을 돌려서 point가 I면 num을 배열에 담아주고, D인 경우는 num이 1인 경우, -1인 경우로 나눠 처리를 해줬다.
D 1인 경우에는 배열의 최대값을 없애야하기에 내림차순으로 정렬을 하고 shift를 해 가장 첫 번째 값을 삭제했고, 그 반대인 경우는 오름차순으로 정렬해 shift를 해줬다.
모든 조건을 처리한 후에는 배열의 최대값과 최소값을 알아내줘야하니 다시 오름차순으로 정렬을 하고,
배열의 길이가 0이면 [0,0]을 리턴, 아니라면 [최대값, 최소값]을 리턴해준다.