풀이
- 해당 문제는 택배를 메인 컨테이너와 서브 컨테이너에 배치하면서
- 요청 대로 알맞은 순서에 맞게 쌓아져 갈 수 있는 택배의 개수를 세는 문제로
- 서브 컨테이너는 추가한 순서의 역순으로 빼낼 수 있는 후입선출이기에
- deque를 사용하면 좋을 것 같다고 생각하여 아래와 같이 작성 후 해결
- 여기서 시간 초과가 한 번 발생했는데 이유는
- i와 order[0]이 같을 경우 order[0]을 del 시켜 제거하도록 했어서
- 해결하기 위해 idx 변수로 적용하여 해결하도록 했음.
from collections import deque
def solution(order):
main = []
sub = deque([])
idx = 0
for i in range(1,len(order)+1):
if i != order[idx]:
sub.appendleft(i)
else:
main.append(i)
idx += 1
while sub and sub[0] == order[idx]:
idx += 1
main.append(sub.popleft())
return len(main)
'알고리즘' 카테고리의 다른 글
[프로그래머스, 자바] 로그인 성공? (0) | 2024.03.15 |
---|---|
[프로그래머스, 자바] 다항식 더하기 (1) | 2024.03.15 |
[프로그래머스, 파이썬] 푸드 파이터 대회 (0) | 2024.03.14 |
[프로그래머스, 파이썬] 문자열 내 마음대로 정렬하기 (0) | 2024.03.14 |
[프로그래머스, 파이썬] 콜라 문제 (0) | 2024.03.14 |