[파이썬] 프로그래머스 : 택배 상자 (Lv.2)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
방향성 생각
큐, 스택문제. 들어오는 입력에 대해서 order와 비교해주면서 풀이
answer에는 넣을 수 있는 택배, stack에는 현재 order와는 달라서 잠시 넣을 택배, income은 새로 들어오는 택배.
전체코드
from collections import deque
def solution(orders):
answer,stack = [],[]
orders = deque(orders)
income = list(range(1,len(orders)+1))
order = orders.popleft() # 새로운 주문
for box in income:
if box == order: # 새로운 주문이 들어온 박스와 같으면
answer.append(box) # 정답에 추가
if orders: # 주문이 남았으면
order = orders.popleft() # 새로운 주문으로 변경
while stack: # 스택이 있을 때
if stack[-1] == order: # 주문이 스택의 마지막과 같으면
answer.append(stack.pop()) # 스택 맨 뒤를 답에
if orders: # 주문이 남았으면
order = orders.popleft() # 새로운 주문으로 변경
else: # 스택이 주문과 다르면 탈출
break
else: # 새로운 주문이 박스와 다르면 스택으로
stack.append(box)
return len(answer)
코멘트
'Algorithm > Data Structures' 카테고리의 다른 글
[파이썬] 프로그래머스 : 예상 대진표 (Lv.2) (0) | 2023.07.29 |
---|---|
[파이썬] 프로그래머스 : 상담원 인원 (Lv.3) (0) | 2023.07.28 |
[파이썬] 프로그래머스 : 다리를 지나는 트럭 (Lv.2) (0) | 2023.07.25 |
[파이썬] 프로그래머스 : 과제 진행하기 (Lv.2) (0) | 2023.07.18 |
[파이썬] 프로그래머스 : 스킬트리 (Lv.2) (0) | 2023.07.11 |
[파이썬] 프로그래머스 : 시소 짝꿍 (Lv.2) (0) | 2023.07.08 |
[파이썬] 프로그래머스 : 야근지수 (Lv.3) (0) | 2023.07.08 |
댓글