프로그래머스 / 택배상자 / python

맹민재·2023년 6월 23일
0

알고리즘

목록 보기
111/134
def solution(order):
    answer = 0
    stack = []
    l = len(order)
    idx = 0
    num = 0
    
    while idx < l:
        if order[idx] > num:
            num += 1
            stack.append(num)
        elif order[idx] == stack[-1]:
            stack.pop()
            idx += 1
        else:
            return idx
    
    return idx

stack을 사용해서 해결한 문제

현재 컨테이너 벨트에 있는 상자보다 트럭에 실어야하는 상자의 번호가 작다면 그 번호가 될때까지 임시 컨테이너 벨트에 옮긴다. -> 스택에 담는다.

그 다음 스텍에서 뺀 후 다음 트럭에 실어야할 상자 번호를 확인한다.
만약 계속해서 스택의 마지막 번호와 같다면 pop 계속 진행

그렇지 않고 크다면 다시 상자를 임시 벨트에 넣는다.

만약 stack에 마지막에있는 상자 번호보다 택배에 넣어야 할 상자의 번호가 작다면 불가능한 경우이다. 그 이유는 이미 택배에 넣어야할 상자의 번호가 stack에 담겨있기 때문이다.

이러한 경우 현재 넣은 상자의 갯수를 return 해준다.

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글