[백준/파이썬] 1966번 프린터 큐 풀이

업데이트:



문제 정보


풀이

문제

문서 우선순위가 있는 프린터 큐에서 특정 문서가 몇 번째로 출력되는지 구하는 문제입니다.

코드

from sys import stdin
import collections
read=stdin.readline

for T in range(int(read())):
    n,m=map(int,read().split())
    l=list(map(int,read().split()))
    for i in range(n):
        l[i]=(i,l[i])
    Q=collections.deque(l)
    k=Q[m][0]
    i=0
    while True:
        if max(Q,key=lambda x:x[1])[1]>Q[0][1]:
            Q.append(Q.popleft())
            continue
        i+=1
        if Q.popleft()[0] == k:
            print(i)
            break

설명

큐의 맨 앞 문서보다 높은 우선순위 문서가 있으면 뒤로 보냅니다.

그렇지 않으면 출력 카운트를 증가시키고 pop합니다. 목표 문서가 출력되는 순간 카운트를 출력합니다.



댓글남기기