이중 우선순위 큐에 대한 구현을 하는 문제였습니다.
JS에서는 편리하게도 sort() 함수가 제공되어 어렵지 않게 해결할 수 있었습니다.
function solution(operationss) {
const operations = operationss.map(operation =>
operation.split(" ")
)
let PQ = [];
for(let i=0; i<operations.length; i++){
if(operations[i][0] === 'I'){
PQ.push(operations[i][1]);
PQ.sort((a,b) => a-b)
}
else{
if(operations[i][1] === '1'){
PQ.pop();
}else if(operations[i][1] === '-1'){
PQ.shift();
}
}
}
if(PQ.length === 0) return [0,0];
else return [Number(PQ[PQ.length-1]), Number(PQ[0])]
}
다음의 방식은 push와 sort로 인해 기존의 배열을 통해서 구현한 우선순위 큐와도 같다.
하지만 class를 이용하여 만드는 경우에는 성능차이가 얼마나 나는지 궁금하다.
js 의 sort 또한 O(nlogn)이기 때문에 크게 늦지는 않을것같다.