개발공부/algorithm
[프로그래머스][python] 프린터 - Stack/queue
so.py
2021. 5. 8. 23:43
문제
- 프로그래머스: 프린터
- Level 2
- Stack/Queue
- 문제링크
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
나의 접근
순환 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