less than 1 minute read

출처

https://school.programmers.co.kr/learn/courses/30/lessons/131704

풀이

# order = [4, 3, 1, 2, 5] = 택배 기사님이 미리 알려준 순서
# 첫번째로 트럭에 넣어야 하는 박스는 4번 박스 라는 의미이다.

def solution(order):
    # 택배물의 갯수가 5개면 5, 4, 3, 2, 1 형식으로 초기화된다.
    # 1번 상자부터 n번상자까지 번호가 증가하는 순서대로 트럭에 넣는것을 시도해야 한다.
    # stack의 경우 python에서 pop하는것은 O(1) 이기 때문에 일부로 이렇게 해준다.
    mainContainer = [i for i in range(len(order), 0, -1)]
    subContainer = []
    truck = []
    
    # 트럭에 넣을 박스번호의 인덱스
    curOrder = 0
    
    while curOrder != len(order):
        if mainContainer and mainContainer[-1] == order[curOrder]:
            truck.append(mainContainer.pop())
            curOrder += 1
        elif subContainer and subContainer[-1] == order[curOrder]:
            truck.append(subContainer.pop())
            curOrder += 1
        elif mainContainer:
            subContainer.append(mainContainer.pop())
        else:
            break
    
    return len(truck)

Leave a comment