문제
- 프로그래머스: 프린터
- Level 2
- Stack/Queue
- 문제링크
나의 접근
순환 stack 을 생각해서 풀었다.
1. 첫번째 인덱스는 고정 시키고 나머지의 리스트에서 더 큰 숫자가 있으면 해당 인덱스를 리스트의 가장 뒤로 보내준다.
2. 순환을 계속하며 첫 번째 인덱스가 가장 큰 숫자일 시, 스택에서 pop 시켜준다. Count를 증가시켜준다.
3. 모든 순환이 발생할 시, 내가 가지고 있는 문서의 인덱스 번호도 업데이트 해준다.
4. Stack이 빌 때까지 반복하며, 내가 가지고 있는 문서의 인덱스 번호가 0일때 pop이 되었다면 탐색 완료.
def solution(priorities, location):
cnt = 0
start = 0
current_location = location
while len(priorities) > 0:
if len(priorities) == 1:
return cnt + 1
if priorities[start] < max(priorities[start + 1: len(priorities) + 1]):
priorities.append(priorities[start])
priorities.pop(start)
if current_location == 0:
current_location = len(priorities) - 1
else:
current_location -= 1
else:
priorities.pop(start)
cnt += 1
if current_location == 0:
break
else:
current_location -= 1
return cnt
'개발공부 > algorithm' 카테고리의 다른 글
[Leetcode][python] 563. Binary Tree Tilt - DFS (0) | 2021.05.16 |
---|---|
[Leetcode][python] 107: Binary Tree Level order Traversal II (0) | 2021.05.15 |
[Leetcode][python] 482: License key formatting - String (0) | 2021.05.01 |
[Leetcode][python] 120: triangle - DP (0) | 2021.04.29 |
[Leetcode][python] 973: K closest point to the origin (0) | 2021.04.28 |