(큐, 덱) 프린터 큐
2020. 3. 3. 16:47ㆍ개발노트
이 문제의 저작권은 BAEKJOON에 있습니다.
https://www.acmicpc.net/problem/1966
문제는 위 링크에서 확인할 수 있습니다.
#https://www.acmicpc.net/problem/1966
#프린터 큐
import sys
from collections import deque
TC = int(input())
for _ in range(TC):
count = 1
#N은 문서의 수 M은 몇 번째로 인쇄되었는지 궁금한 문서
N, M = map(int, input().split())
q = list(map(int, input().split()))
q = deque(q)
pointer = [i for i in range(N)]
pointer = deque(pointer)
while 1:
if pointer[0] == M and q[0] == max(q):
print(count)
break
if q[0] != max(q):
q.rotate(-1)
pointer.rotate(-1)
elif q[0] == max(q):
q.popleft()
pointer.popleft()
count += 1
#print(q, pointer)
문서에 정해진 중요도에 따라 출력되며 중요도가 낮은 문서이면 rotate(-1) 하도록 했습니다.
처음 문서에 M번째 문서가 언제 출력되는지를 알아내는 문재이기 때문에 pointer를 함께 rotate(-1)했습니다.
pointer를 생성하지 않고 처음부터 문서 중요도와 순서를 zip()을 이용해 묶어주는 방법도 있습니다.