알고리즘/프로그래머스
[프로그래머스/python] 택배 상자
하루아아한잔
2023. 3. 17. 13:29
[풀이 방법]
- order에는 택배가 실려야할 순서가 있습니다. order = [4,3,1,2,5] 라면 4번째 상자, 3번째 상자, 1번째 상자 순으로 order에 맞춰 실어야 합니다.
- 이때, 순서에 맞지 않는 택배가 왔을 경우를 위한 보조 컨테이너가 있습니다. 보조 컨테이너는 stack 구조 입니다.
- 택배는 무조건 첫번째부터 순서대로 나오므로, for문을 통해 탐색을 해주었습니다. 문제 조건에 맞춰 나오는 상자의 순서와 order가 맞지 않을 경우 stack에 넣었습니다.
*이때 핵심이 되는 경우는 for문 안에 while문 입니다. 보조컨테이너 역할을 하는 q가 비어있지 않을 경우, 매 상황에 처리될 수 있는지 확인하는 코드입니다.
[풀이 코드]
from collections import deque
def solution(order):
answer = 0
q = deque()
now = 0
for i in range(len(order)):
if i + 1 != order[now]:
q.append(i + 1)
if i + 1 == order[now]:
answer += 1
now += 1
while q and q[-1] == order[now]:
q.pop()
answer += 1
now += 1
return answer