링크텍스트
이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다.
현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다.
나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다.
*중요도는 숫자가 큰 순서이다. (처음에 작은 순서라고 생각하고 풀었다.)
from collections import deque
q = int(input())
for _ in range(q):
n, m = input().split()
arr = list(map(int, (input()).split)))
prints_deque = deque(arr)
count = 1 # 인쇄 순서 카운터
while len(prints_deque) > 0: # 큐에 문서들이 들어있는 동안 반복
# 인쇄 순서를 찾으려는 문서의 위치
if m >= 0: m = m - 1
else: m = len(arr) - 1
# 가장 앞에 있는 문서보다 큐에 들어있는 문서들 중 가장 우선순위가 높은 문서가 존재할 경우
# 그 문서를 꺼내서 프린터의 맨 뒷 순서로 보냄
if prints_deque[0] < max(prints_deque):
prints_deque.append(prints_deque.popleft())
else: # 가장 앞에 있는 문서가 가장 우선순위가 높은 문서일 경우
if m == 0: break
prints_deque.popleft() # 출력
count += 1 # (인쇄 순서를 찾으려는 문서 입장에서 보면 순서 한단계 뒤로 밀리게 되는 것)
print(count)
다시 읽으니까 포인터 뭔 소린지 모르겠음.. 다시 정리하기