https://school.programmers.co.kr/learn/courses/30/lessons/131704#
from collections import deque
def solution(order):
answer = 0
stack = []
arr = [i for i in range(1,len(order) + 1)]
arr = deque(arr)
stack = deque(stack)
order = deque(order)
while arr:
num = arr.popleft()
if num == order[0]:
order.popleft()
answer += 1
else:
stack.append(num)
if order and stack and stack[-1] == order[0]:
stack.pop()
order.popleft()
answer+=1
while order and stack and stack[-1] == order[0]:
answer += 1
order.popleft()
stack.pop()
return answer
역시나 굉장히 불친절한 문제였다.
문제 이해만 5분이 넘게 걸렸다.
문제는 택배를 먼저 넣어야 할 순서가 담긴 리스트 order에 순서에 맞게
1부터 len(order) + 1 까지 (order가 [4,1,2,3,5]라면 [1,2,3,4,5] 순서의 택배를 4번, 1번 2번 3번 5번 순서대로 넣어야 한다) 순서대로 넣어야 한다.
전형적인 스택 문제이고 스택을 이용해 풀었다.
'알고리즘' 카테고리의 다른 글
*프로그래머스)거리두기 확인하기 (0) | 2023.02.16 |
---|---|
*프로그래머스)[3]차 방금그곡 (0) | 2023.02.15 |
프로그래머스)연속 부부 수열 합의 개수-python (0) | 2023.02.13 |
프로그래머스)모음사전-pyhton (0) | 2023.02.13 |
프로그래머스)시저 암호-python (0) | 2023.02.13 |