알고리즘 문제풀이

프로그래머스 level 2 - 택배상자(Javascript)

승큐니 2023. 11. 14. 13:32

택배상자

정답코드

function solution(order) {
    var answer = 0;
    const container = [...Array(order.length)].map((v,i)=>v = i + 1);
    const stack = [];
    let containerIndex = 0, orderIndex = 0;
    
    while(containerIndex <= order.length){
        // 컨테이너와 order를 모두 순회한 경우
        if(containerIndex === container.length && orderIndex === order.length) break;
        
        // 컨테이너에 있는 택배의 순서가 맞는 경우
        if(container[containerIndex] === order[orderIndex]){
            containerIndex++;
            orderIndex++;
            answer++;
            continue;
        }
        
        // 보조 컨테이너의 택배 순서가 맞는 경우
        if(stack.length && stack[stack.length - 1] === order[orderIndex]){
            stack.pop();
            orderIndex++;
            answer++;
            continue;
        }
        
        // 컨테이너 -> 보조컨테이너
        stack.push(container[containerIndex]);
        containerIndex++;
    }
    
    return answer;
}