*문제 출처는 프로그래머스에 있습니다.
문제 제목: 택배상자 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/131704
문제 설명
나의 풀이
def solution(order):
answer = 0
box = []
subox = []
order_idx = 0
box_idx = 0
for i in range(len(order)):
box.append(i + 1)
while box_idx < len(order):
if box[box_idx] == order[order_idx]:
box_idx += 1
order_idx += 1
answer += 1
elif subox and subox[-1] == order[order_idx]:
subox.pop()
order_idx += 1
answer += 1
else:
subox.append(box[box_idx])
box_idx += 1
while subox:
if subox[-1] == order[order_idx]:
subox.pop()
order_idx += 1
answer += 1
else:
break
return answer
보조 상자를 만들어서 스택을 이용한 방법을 사용했다. 반복문을 한 번 더 사용해서 시간 복잡도가 더 걸리는게 아쉬웠다.
※ 알아야 할 것
파이썬에서 스택을 사용할 때 리스트(List)를 그냥 사용하면 된다 append, pop을 사용하면 스택처럼 사용할 수 있다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-Python' 카테고리의 다른 글
Programmers / 숫자 변환하기 / Python (0) | 2024.05.11 |
---|---|
Programmers / 등굣길 / Python (0) | 2024.05.09 |
Programmers / 최고의 집합 / Python (0) | 2024.05.06 |
Programmers / 야근 지수 / Python (0) | 2024.05.03 |
Programmers / 단어 변환 / Python (0) | 2024.04.16 |