PROGRAMMERS

[프로그래머스/파이썬] 택배상자

kode-daks 2025. 1. 31. 13:47

내 풀이

from collections import deque

def solution(order):
    answer = 0
    conv_main = deque([i for i in range(1, len(order)+1)]) # 원래 메인 컨베이어 벨트 (Queue)
    conv_aux = deque() # 보조 컨베이어 벨트 (Stack)
    order = deque(order) # 택배 실을 순서
    
    while True:
    	# 메인 컨베이어 벨트에 택배가 있고, 실어야 할 택배와 메인 컨베이어 첫 번째가 같을 때 
        if conv_main and order[0] == conv_main[0]:
            order.popleft()
            conv_main.popleft()
            answer += 1
        # 메인에 없을 경우, 실어야 할 택배와 보조 컨베이어 마지막이 같을 때
        elif conv_aux and order[0] == conv_aux[-1]:
            order.popleft()
            conv_aux.pop()
            answer += 1
        # 둘 다 없을 경우 (1) 메인 -> 보조 (2) 불가능한 경우 break
        else:
            try:
                conv_aux.append(conv_main.popleft())
            except:
                break       
    return answer

 

메모

-