[백준/파이썬] 1966번 프린터 큐 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1966번 프린터 큐
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
문서 우선순위가 있는 프린터 큐에서 특정 문서가 몇 번째로 출력되는지 구하는 문제입니다.
코드
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합니다. 목표 문서가 출력되는 순간 카운트를 출력합니다.
댓글남기기