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)
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
<3주차> [BOJ / C++] 1874번 - 스택 수열 (0) | 2022.01.29 |
---|---|
[백준|python] 2852번 NBA 농구 (0) | 2022.01.28 |
[BOJ/python] 1157번 단어 공부 (0) | 2022.01.25 |
[백준 / python] 5218번 - 알파벳 거리 (0) | 2022.01.25 |
[백준/C++] 14561번 회문 (2) | 2022.01.25 |