큐를 이용해서
1. Queue의 가장 앞에 있는 문서의 중요도 확인
2. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치. 그렇지 않다면 바로 인쇄
의 조건에 따른다.
처음엔 인덱스로 찾으려 했던 M위치의 문서를 추적하려고 했는데, 아무래도 지금 내 실력으로는 역부족인건지 못하는 건진 모르겠지만 구현이 안되어서 애초에 queue에 저장할 때 내가 찾는 문서인지를 우선순위와 함께 튜플형태로 같이 저장하기로 했다.
queue.append((temp[i], i == M))
cur = queue.popleft()로 첫번째 큐의 값을 뽑고, any()를 이용하여 cur[0] < q[0]을 만족하는 값이 하나라도 있다면 큐의 마지막에 넣고, 아니라면 순서에 +1을 한다. 찾는 값이 맞다면 순서를 출력한다.
❗
any()는 ()안에 들어가는 조건식이 하나라도 True라면 True가 된다.
from collections import deque
import sys
input = sys.stdin.readline
for _ in range(int(input())):
N, M = map(int, input().split())
temp = list(map(int, input().split()))
queue = deque()
for i in range(N):
queue.append((temp[i], i == M))
count = 0
while True:
cur = queue.popleft()
if any(cur[0] < q[0] for q in queue):
queue.append(cur)
else:
count += 1
if cur[1]:
print(count)
break