본문 바로가기

Algorithm/문제풀이

Programmers - 이중우선순위 큐 / Javascript

function solution(operations) {
    let que = [];
    let answer = [];
    
    //들어온 연산 순서대로 que에 작업을 해줌
    operations.map((o) => {
        const isInput = o.slice(0, 1) === 'I';
        //'I'로 시작하는 명령일 경우
        if(isInput) {
        	//들어온 숫자 큐
            que.push(o.slice(2));
            //오름차순으로 정렬
            que.sort((a, b) => a - b);
        //'D'로 시작하는 명령이면서 que는 빈 que가 아님(빈 큐인 경우에는 연산을 무시하라고 문제에 나와있음)
        } else if (!isInput && que.length !== 0){
            const deleteMax = o.slice(2) === '1';
            if(deleteMax) {
            	//최대 값인 경우 뒤에서 pop
                que.pop();
            } else {
            	//최소 값인 경우 앞에서 shift
                que.shift();
            }
        }
    });
    
    //큐가 비었을 경우에는 [0, 0]으로 return 아닌 경우에는 [최대값,최소값]으로 return
    return que.length === 0? [0, 0] : [parseInt(que[que.length-1]), parseInt(que[0])];
}