Koala - 5기/기초 알고리즘 스터디
[백준|python] 1966번 프린터 큐
jeonyoungseo
2022. 1. 26. 08:38

N은 덱에 들어 있는 원소의 개수이고, M은 내가 목표로 하는 값의 위치이다.
계속해서 deque의 맨 앞의 원소를 다른 원소들과 비교했을 때 , 더 큰 원소가 없을 경우에는 popleft해주고 N,M을 하나씩 줄여주면 되고, remove했으므로 Remove를 1씩 늘인다. 더 큰 원소가 있을 경우에는 popleft해준 걸 뒤로 append시키며, M만 하나 줄인다.
이걸 M이 -1이 될 때까지 (즉 내가 목표하는 값이 드디어 pop 되었을 때) 한 후 remove 변수값을 구하면 된다.
from collections import deque
import sys
input=sys.stdin.readline
t=int(input())
for i in range(t):
N,M=map(int, input().split())
Remove=0
List=deque(map(int,input().split()))
if N==1:
print(1)
else:
while True:
if M==-1:
break
if List[0]!=max(List): #더 큰게 하나라도 있으면
x=List.popleft()
List.append(x)
if M==0:
M+=(N-1)
else:
M-=1
else:
List.popleft()
Remove+=1
M-=1
N-=1
continue
print(Remove)