[JavaScript][Programmers] 이중우선순위큐

조준형·2021년 7월 13일
0

Algorithm

목록 보기
28/142
post-thumbnail

🔎 이중우선순위큐

❓ 문제링크

https://programmers.co.kr/learn/courses/30/lessons/42628

📄 제출 코드

function solution(operations) {
    let pq = [];
    var answer = [];
    for (var i = 0; i < operations.length; i++) {
        let command = operations[i].split(" ")[0];
        let value = parseInt(operations[i].split(" ")[1]);
        if (pq.length == 0) {
            switch (command) {
                case 'I':
                    pq.push(value);
                    break;
                case 'D':
                    //console.log('넘겨');
                    break;
            }
        } else {
            switch (command) {
                case 'I':
                    pq.push(value);
                    break;
                case 'D':
                    if (value == 1) {
                        let idx = pq.indexOf(parseInt(Math.max.apply(null, pq)));
                        pq.splice(idx, 1);
                    } else if (value == -1) {
                        let idx = pq.indexOf(parseInt(Math.min.apply(null, pq)));
                        pq.splice(idx, 1);
                    }
            }
        }
    }
    //console.log(`pq : ${pq}`);

    
    // let max = 0;
    // let min = Infinity;
    if (pq.length != 0) {
        // for (var i = 0; i < pq.length; i++) {
        //     max < pq[i] ? max = pq[i] : max = max;
        //     min > pq[i] ? min = pq[i] : min = min;
        // }
        answer = [parseInt(Math.max.apply(null, pq)), parseInt(Math.min.apply(null, pq))];
    }
    else {
        answer = [0,0]
    }
    
    //console.log(`max : ${max}, min : ${min}`)
    return answer;
}

let operations = ["I -45", "I 653", "D 1", "I -642", "I 45", "I 97", "D 1", "D -1", "I 333"];
console.log(solution(operations))

생각보다 간단하게 풀리긴 했는데 조금 해맷었다.
우선 Math.max로 구하려다가 NaN이 떠서 배열을 돌면서 max,min을 구하다가 Math.max.apply가 생각나서 해당 방법을 적용하였다.

그 다음 테케가 2,6이 계속 틀려서 질문게시판을 보니 pq가 빈배열일 때 D 를 무시하는게 필요했다.( 문제에도 적혀있었다.. )

마지막으로 그래도 틀렸다나오자 뭔가 이상해 console로 다찍어보니 idx가 이상한값이 나오는걸 발견하고, 타입이 이상한건가 해서 type을 다 출력해서 확인 후 일치시키니까 통과하였다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글