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

나같은 사람이 많았나봐 ... 프로그래머스 질문탭에 이 문제에 대한 답변이 너무 친절하게 있어서 가져와봤다.

출처: 프로그래머스 > 코딩테스트 연습 > 택배상자 > 질문목록
문제 풀이 과정은 다음 과정을 따라가면 된다!
1. 컨베이어 벨트에서 1부터 시작하여 하나씩 상자를 확인
2. 지금 실어야 할 상자(order[idx])와 같으면 -> 트럭에 싣기
3. 아니면 -> 보조 벨트(stack)에 싣기
4. stack의 top이 현재 순서(order[idx])와 같으면 반복적으로 꺼내서 트럭에 싣기
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
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;
}
