[PGS] 42628. 이중우선순위큐

레몬커드요거트·2026년 4월 22일

코딩테스트준비

목록 보기
52/66
post-thumbnail

최종코드

function solution(operations) {
    const queue = [];
    
    for(const operate of operations){
        const line = operate.split(" ");

        if(line[0] === "I") {
            queue.push(Number(line[1]));
        }
        else if(line[0] === "D"){
            if(queue.length > 0){
                queue.sort((a,b) => a - b)
                if(Number(line[1]) === 1){
                    queue.pop();
                }
                else if(Number(line[1]) === -1){
                    queue.shift();    
                }
            } 
        }
    }
    if(queue.length === 0){
        return [0, 0]
    }
    queue.sort((a,b) => a-b);
    const maxNum = queue[queue.length -1]
    const minNum = queue[0];
    
    return [maxNum, minNum];
}

실패 1

function solution(operations) {
    const queue = [];
    
    for(const operate of operations){
        const line = operate.split(" ");

        if(line[0] === "I") {
            queue.push(Number(line[1]));
        }
        else if(line[0] === "D"){
            if(queue.length > 0){
                queue.sort((a,b) => a - b)
                if(Number(line[1]) === 1){
                    queue.pop();
                }
                else if(Number(line[1]) === -1){
                    queue.shift();    
                }
            } else if(queue.length === 0){
                return [0, 0];
            }
        }
    }
    queue.sort((a,b) => a-b);
    const maxNum = queue.pop();
    const minNum = queue.shift();
    
    return [maxNum, minNum];
}

연산 실행 중에 큐가 비어있으면 return [0, 0] 이 아니라 연산 무시

연살 실행 완료 후 큐가 비어있을 때 return [0, 0] 하기

실패 2

function solution(operations) {
    const queue = [];
    
    for(const operate of operations){
        const line = operate.split(" ");

        if(line[0] === "I") {
            queue.push(Number(line[1]));
        }
        else if(line[0] === "D"){
            if(queue.length > 0){
                queue.sort((a,b) => a - b)
                if(Number(line[1]) === 1){
                    queue.pop();
                }
                else if(Number(line[1]) === -1){
                    queue.shift();    
                }
            } 
        }
    }
    if(queue.length === 0){
        return [0, 0]
    }
    queue.sort((a,b) => a-b);
    const maxNum = queue.pop();
    const minNum = queue.shift();
    
    return [maxNum, minNum];
}

queue에 한 개만 있는 경우 maxNum = queue.pop() 실행의 경우

minNum은 undefined가 될 수 있음

profile
비요뜨 최고~

0개의 댓글