[풀이 방법]
- 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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/python] 두 큐 합 같게 만들기 (0) | 2023.03.22 |
---|---|
[프로그래머스/python] 혼자 놀기의 달인 (0) | 2023.03.17 |
[프로그래머스/python] 디펜스 게임 (0) | 2023.03.14 |
[프로그래머스/python] 덧칠하기 (0) | 2023.03.14 |
[프로그래머스/python] 마법의 엘리베이터 (1) | 2023.03.13 |