첫 줄에 문서의 개수 N, 몇 번째로 인쇄되는지 궁금한 문서 M,
두 번째 줄에 문서의 중요도가 나열되어있다.
테스트 케이스 3번에서
N이 6이고 M이 0이면 1이 몇 번째로 인쇄되는지 궁금한 문서인데
왜 2가 아니고 5인지 한참 생각했다.
문제 중
2. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다.
이 제한사항 때문이었다.
중요도가 같을 때의 테스트 케이스를 보면,
1 1 9 1 1 1
에서 1의 중요도가 가장 높은 문서가 아니기 때문에
1 9 1 1 1 1
9 1 1 1 1 1 -> 9 출력
1 1 1 1 1 -> 1 출력
1 1 1 1 -> 1 출력
1 1 1 -> 1 출력
1 1 -> 1 출력
의 순서를 거치고 5 번째에 출력이 되는 것이다.
# BOJ _ 1966 프린터 큐
from collections import deque
for i in range(int(input())):
N,M = map(int, input().split())
case = deque(list(map(int, input().split())))
idx_case = deque(list(range(N))) # 중복 숫자가 나올 수도 있으므로 idx로 구분해주기 위함
cnt = 0
while case:
if case[0] == max(case): # 중요도가 가장 높은 서류가 case의 top에 있으면
cnt += 1
case.popleft() # 프린트
if idx_case.popleft() == M: # case를 popleft 한 것처럼 idx case에서도 제거하는데, 원래 출력하려는 idx와 같으면
print(cnt) # 여기까지만 출력하면 되므로 print(cnt)
else:
case.rotate(-1)
idx_case.rotate(-1)
같은 중요도의 문서들을 구분하기 위해,
문서들 길이와 같은 인덱스 리스트를 만들어주어
리스트를 회전할 때 함께 회전하며 출력하게끔 하였다.