본문 바로가기
Algorithm/프로그래머스

Level3. 프로그래머스 이중우선순위큐 - JavaScript

by 강깅꽁 2020. 11. 6.

 

문제 설명

값 입력, 최댓값 삭제 최소값 삭제의 명령어들을 배열로 받아서 명령어를 실행하고 최종 배열의 길이가 0이면

[0,0]을 반환 아니면 [최대값, 최소값]을 반환하는 문제다. 

 

q에 있는 원소를 우선순위에 맞게 저장하는게 관건이다.

만일 배열이 [3,3,1]이고 새로운 원소 4가 우선순위 큐에 들어간다고 했을 때 [4,3,3,1]이 되어야 한다.

 

JS에 splice라는 array method를 이용하면 쉽게 배열에 원소를 추가할 수 있다.

 

코드 흐름

 

명령문 순회

명령어에 따라 처리

만일 입력이면 우선순위 큐에 새로운 원소를 우선순위를 고려하여 삽입

삭제라면 큐에서 최대값 또는 최소값 삭제

 

모든 명령문이 끝나고 정답 반환

 

function solution(operations) {
    var answer = [];
    let arr = []
   for( let operation of operations) {
       const splited = operation.split(' ');
       const instrcution = splited[0];
       const num = Number(splited[1]);
       if( instrcution === 'I') {
           const length = arr.length;
           for(let i = 0; i < length; i++){
               if( num >= arr[i]) {
                   arr.splice(i, 0, num);
                   break;
               }
           } 
           if( length === arr.length ) arr.push(num);
       } else if ( instrcution === 'D' ) {
            if( num === -1) arr.pop();
            else arr.shift();
       }
   }
    answer = arr.length ? [ arr[0], arr[arr.length-1] ] : [0, 0];
    return answer;
}