보조 컨테이너는 stack으로 구현
order를 보고 만약 stack에 존재하는 box라면 stack에 가장 끝부분과 비교한다.
만약 같다면 pop을 하고 아니라면 더이상 상자를 못 싣기 때문에 끝낸다.
만약 stack에 존재하지 않는 box라면 현재 start 인덱스부터 box 인덱스 까지 stack에 넣어준다.
그리고 start 인덱스를 현재 실은 box보다 1 더해주고 다시 루프를 돌려준다.
def solution(order):
answer = 0
stack = []
start = 1
for box in order:
if box not in stack:
for i in range(start, box):
stack.append(i)
start = box + 1
answer += 1
else:
if stack[-1] == box:
stack.pop()
answer += 1
else:
break
return answer