n개 문서의 중요도를 저장할 리스트(files
)와 몇 번째로 인쇄되는지 궁금한 문서의 위치를 표시한 리스트(check
), 총 2개의 리스트가 필요하다.
files
과 그때의 리스트의 최댓값(max(files
)을 비교해 나간다.
비교 결과에 따라 문서를 출력, 즉 files.pop()
을 하여 리스트에서 해당 값을 빼내거나
리스트의 가장 뒤로 값을 옮기게 되는데 files.append(files.pop())
위와 같은 작업을 check
에도 똑같이 수행한다.
이를 통해 files
내에서 문서들의 위치가 계속 변경이 되더라도 내가 표시해둔 문서의 위치 정보를 계속 유지할 수 있다.
import sys
input = sys.stdin.readline
cases = int(input())
for _ in range(cases):
n, idx = map(int, input().split())
files = list(map(int, input().split()))
check = [0 for _ in range(n)]
check[idx] = 1
count = 0
while files:
if max(files) == files[0]:
files.pop(0)
count += 1
if check.pop(0):
print(count)
break
else:
files.append(files.pop(0))
check.append(check.pop(0))
문제 제대로 읽기