알고리즘[Python]/프로그래머스
[ Lv 2 ] 프린터
병훈1234
2021. 6. 23. 11:19
- 우선순위를 저장해둘 prior_copy를 만들어 둔 다음에 오름차순으로 정렬을 시킨다.
- 즉, prior_copy의 마지막 요소가 출력되어야 하는 요소의 우선순위
- queue를 돌면서 우선순위가 가장 높으면 출력하고, 아니라면 큐의 마지막에 넣어야 한다, 하지만 우선순위가 같은 케이스도 있으므로 우선순위와 인덱스를 같이 queue에 넣어둔다.
- 우선순위가 가장 높은걸 출력하되, 문제의 location을 프린터가 출력할 때, 해당 location이 몇번째로 출력되는지 나타내면 된다.
import copy
from collections import deque
def solution(priorities, location):
prior_copy = copy.deepcopy(priorities)
prior_copy.sort()
queue = deque()
for i, pr in enumerate(priorities):
queue.append([pr, i]) # 우선순위랑 해당 인덱스 같이 삽입
answer = 0
while queue:
pr, idx = queue.popleft()
if pr == prior_copy[-1]:
answer += 1
if idx == location:
break
prior_copy.pop()
else:
queue.append([pr, idx])
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges