FrontEnd/프로그래머스

[JS] 택배상자

728x90

문제를 읽어보면 알 수 있지만 스택 구조를 의도적으로 유도하고 있다.

 

 

1. 주문받는 상자가 현재 상자보다 크다면 해당 상자가 나올때까지 스택 구조(보조 컨테이너)에 상자들을 담고 주문상자가 나오면 넘어간다.

2. 주문받는 상자가 현재 상자보다 작으면 스택 구조를 뒤져서 찾아보고 없다면 결과값을 가지고 종료한다.

3. 그외 경우는 상자를 찾은 경우이므로 ret와 box를 증가시키고 다음 배달순서를 탐색한다.

 

 

function solution(order) {
    const stk = []
    let ret = 0
    let box = 1
    
    outer : for (const orderBox of order) {
        while (orderBox > box) stk.push(box++)
        if (orderBox < box){
            while(stk.length){
                if (orderBox === stk.pop()) {
                    ret ++
                    continue outer
                }
                return ret
            }
        }
        ret ++
        box ++
    }
    return ret
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 혼자 놀기의 달인  (0) 2023.06.08
연속 부분 수열 합의 개수  (0) 2023.06.06
[JS] 롤케이크 자르기  (0) 2023.06.05
[JS] 우박수열 정적분  (1) 2023.06.03
[JS] 숫자 카드 나누기  (0) 2023.06.03