[BOJ]白準1966号プリンタキュー(Python)
質問する
ご存じのように、プリンタでは、印刷するドキュメントを印刷コマンドを受信した順序、すなわち、要求されたドキュメントを先に印刷します.複数の文書がキュー資料構造に積み重ねられている場合、FIFO-Firstの第1の出力に従って印刷されます.しかし、尚根は、以下の条件で印刷する新しいプリンタ内部ソフトウェアを開発した.
現在のキュー内のドキュメントの数と重要性を指定したときに、どのドキュメントが何回目に印刷されたかを特定します.例えば、上記の例では、Cドキュメントが1位、Aドキュメントが3位となっている.
入力
しゅつりょく
各テスト例について、ドキュメントの数回目の印刷を出力します.
例
入力します。
3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1
出力します。
1
2
5
例
from collections import deque
test_case = int(input()) # 테스트케이스 입력
for _ in range(test_case): # 테스트케이스 만큼 반복
n, m = map(int, input().split())
_list = deque(map(int, input().split())) # 큐 생성
priority = max(_list) # 가장 높은 우선순위 찾음
while True:
now = _list.popleft() # 맨 앞 문서 가져옴
m -= 1 # 목표물 위치 한 칸 앞으로 당겨짐
if now != priority: # 현재 가져온 문서가 우선순위가 가장 높지 않다면
_list.append(now) # 문서를 다시 뒤로 돌려보냄
if m == -1: # 현재 가져온 문서가 목표 문서
m = len(_list) - 1
continue
else: # 현재 가져온 문서가 우선순위가 가장 높다면
if len(_list) != 0: # 출력할 문서가 남아있을 경우
priority = max(_list) # 가장 높은 우선순위 갱신
if m == -1: # 현재 가져온 문서가 목표 문서
print(n - len(_list)) # (전체 - 남은 문서) == 출력된 순서
break
Reference
この問題について([BOJ]白準1966号プリンタキュー(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@deannn/BOJ-백준-1966번-프린터-큐Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol