프린터 큐
- 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다.
- 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그 렇지 않다면 바로 인쇄를 한다.
from collections import deque
t = int(input())
for i in range(t):
n, m = list(map(int, input().split()))
queue = deque(map(int, input().split()))
idx = deque(range(0, n))
order = 0
while True:
if queue[0] == max(queue):
order += 1
if idx[0] == m:
print(order)
break
else:
queue.popleft()
idx.popleft()
else:
queue.append(queue.popleft())
idx.append(idx.popleft())
from collections import deque
deque 모듈을 사용하여 큐를 효율적으로 구현한다.
for i in range(t):
n, m = list(map(int, input().split()))
queue = deque(map(int, input().split()))
idx = deque(range(0, n))
order = 0
t만큼 반복하여 각 테스트 케이스를 처리한다. 문서의 수 n과 타겟 문서의 인덱스 m을 입력 받아 각각 변수에 저장하고, queue에는 문서의 중요도를, idx는 문서의 인덱스를 저장하는 큐를 사용한다.
while True:
if queue[0] == max(queue):
order += 1
if idx[0] == m:
print(order)
break
else:
queue.popleft()
idx.popleft()
else:
queue.append(queue.popleft())
idx.append(idx.popleft())