728x90
📚문제
📝풀이
# 1966번 프린터큐(Silver III)
import sys
# 테스트 케이스 개수
t = int(input())
for _ in range(t):
# m: 문서의 개수
# n: 몇번째로 출력되는지 알고 싶은 숫자의 현재 위치
n,m = map(int,input().split())
# 문서들 간 우선 순위
priority = list(map(int,input().split()))
# 문서의 기존 위치(인덱스) 저장
# 문서가 인쇄되거나 후순위로 가면 위치가 바뀌므로
index = [i for i in range(n)]
# 몇번째에 출력이 되는지 카운트
cnt = 0
while True:
# 제일 처음 있는 문서가 중요도가 제일 높다면
if priority[0] == max(priority):
# 그 문서는 바로 인쇄 (인쇄횟수 +1)
cnt += 1
# 만약 찾고 싶었던 문서였다면 몇번째에 인쇄된건지 인쇄횟수 출력
if index[0] == m:
print(cnt)
break
# 찾고 싶었던 문서가 아니라면
else:
del priority[0]
del index[0]
# 다른 문서의 우선순위가 높다면
else:
# 해당문서는 인쇄되지 않고 인덱스와 중요도가 후순위로 밀림
priority.append(priority[0])
del priority[0]
index.append(index[0])
del index[0]
문제를 이해하는데 한참 걸렸다..
저 m의 의미가 무슨 뜻인지가 잘 이해가 안되서
문제 풀이를 보고 한 단계씩 따라가면서 이해를 했다
그리고 index 리스트의 역할은
문서들의 처음 위치를 기억하고
인쇄 순회를 돌다가
찾고 싶어했던 문서의 위치(m)과 인덱스(index)가 같아진다면
문서를 인쇄하고
그 때까지의 문서 인쇄 횟수 (cnt) 출력
728x90