[프로그래머스] 택배상자

Gaanii·2025년 5월 16일

Problem Solving

목록 보기
201/210
post-thumbnail

아래 프로그래머스 로고를 클릭하면 해당 문제로 이동합니다 😀

프로그래머스로고



풀이과정


솔직히 이 문제 처음 봤을때 이해를 못했다.
왜냐면 문제에서 설명을 이렇게 해주는데 나는 저 4, 3, 1, 2, 5가 싣어야하는 순서가 적혔고 앞에서부터 순서가 아니면 스택에 넣는 ,, 그런거로 이해를 했는데 전혀 ^^ 아니었다 ^^
문제

나같은 사람이 많았나봐 ... 프로그래머스 질문탭에 이 문제에 대한 답변이 너무 친절하게 있어서 가져와봤다.
답변
출처: 프로그래머스 > 코딩테스트 연습 > 택배상자 > 질문목록

문제 풀이 과정은 다음 과정을 따라가면 된다!
1. 컨베이어 벨트에서 1부터 시작하여 하나씩 상자를 확인
2. 지금 실어야 할 상자(order[idx])와 같으면 -> 트럭에 싣기
3. 아니면 -> 보조 벨트(stack)에 싣기
4. stack의 top이 현재 순서(order[idx])와 같으면 반복적으로 꺼내서 트럭에 싣기

코드


1. Python

def solution(order):
    idx = 0
    box = 1
    stack = []
    while box <= len(order):
        if box == order[idx]:
            idx += 1
        else:
            stack.append(box);
        box += 1
        
        while stack and stack[-1] == order[idx]:
            stack.pop()
            idx += 1
    return idx
        

2. JS

function solution(order) {
    let stack = [];
    let idx = 0;
    let box = 1;
    
    while(box <= order.length){
        if(box === order[idx]){
            idx++;
        } else {
            stack.push(box);
        }
        box++;
        
        while(stack.length > 0 && stack[stack.length - 1] === order[idx]){
            stack.pop();
            idx++;
        }
    }
    return idx;
}


결과


정답

0개의 댓글