알고리즘/문제풀이
[Python] Programmers 프린터
정찡이
2021. 9. 28. 13:35
728x90
1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
2. 문제 요약
3. 아이디어 정리
- 덱을 사용하여 앞에 있는 문서를 꺼낼 수 있도록 합니다.
- 가장 앞에 있는 것과 max 문서를 비교하여 더 중요한 문서가 있는 경우 맨 뒤로 보냅니다.
- 아닌 경우 내가 요청한 문서인지 확인합니다.
4. 문제 풀이
4-1. 내 풀이
import collections
def solution(priorities, location):
answer = 0
priorities = [(x, i) for i, x in enumerate(priorities)] # 각 우선 순위의 인덱스와 원소를 튜플로 저장함
priorities = collections.deque(priorities) # 앞에서 제거해야함 > 덱 사용
while priorities:
priority = priorities.popleft()
if priorities and max(priorities)[0] > priority[0]: # 가장 큰 수 > 왼쪽 원소: 맨 뒤로 해당 원소를 보냄
priorities.append(priority)
else: # location 동일한 경우, 그만
answer += 1
if location == priority[1]:
break
return answer
5. 결론
- 덱 사용 문제