프로그래머스 Level 3 - 이중우선순위큐
📌 문제 설명
📌 생각한 풀이 방법
- switch문을 사용하여 각 경우에 맞게 operation을 실행함
1-1. operation이 D 1일 때
-> queue에 값이 존재하면 맨 앞의 값을 빼줌
1-2. operation이 D -1일 때
-> queue에 값이 존재하면 맨 뒤의 값을 빼줌
1-3. operation이 | 숫자일 때
-> 해당 숫자를 queue에 넣음
-> queue를 내림 차순으로 정렬함
- queue 최대 값과 최소값을 반환함 (queue값이 존재하지 않으면 [0,0] 반환)
📌 풀이
function solution(operations) {
let queue = [];
for (let i = 0; i < operations.length; i++) {
let currentOperation = operations[i];
switch (
currentOperation
) {
case "D 1":
if (queue.length) {
queue.shift();
}
break;
case "D -1":
if (queue.length) {
queue.pop();
}
break;
default:
let value = currentOperation.split(" ");
queue.push(value[1]);
queue.sort((a, b) => b - a);
break;
}
}
return queue.length ? [Number(queue.shift()), Number(queue.pop())] : [0, 0];
}