문제설명
프린터에 입력된 인쇄목록들의 우선순위를 입력받고 자신이 원하는 인쇄물이 몇 번째로 인쇄되는지 구하는 문제입니다.
작동 순서
큐에 우선순위와 인덱스번호를 입력합니다.
우선순위별로 인쇄목록을 정렬합니다.
큐에서 인쇄물을 꺼내서 우선순위를 확인하고 현재 뽑아야하는 인쇄물이면 그 인쇄물을 인쇄하고 answer를 +1해줍니다. 현재 뽑아야하는 인쇄물이 아니면 그 인쇄물을 다시 큐에 삽입하고 다음 인쇄물을 확인합니다.
큐에서 꺼낸 인쇄물이 현재 뽑아야하는 인쇄물이고 그 인쇄물이 자신이 원하는 인쇄물일 경우 anwer를 반납합니다.
소스코드
from collections import deque
def solution(priorities, location):
answer = 0
q=deque()
for i in range(len(priorities)):
q.append([priorities[i],i])
priorities.sort(reverse=True)
for i in range(len(priorities)):
while True:
temp=q.popleft()
if temp[0]!=priorities[i]:
q.append(temp)
else:
answer+=1
if temp[1]==location:
return answer
else:
break