(큐, 덱) 프린터 큐

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()을 이용해 묶어주는 방법도 있습니다.