import sys
from collections import deque
input = sys.stdin.readline
T = int(input())
for _ in range(T):
N, target = map(int, input().split())
importance = list(map(int, input().split()))
# 몇 번째 인덱스였는지 확인하기 위해 인덱스를 함께 저장해준다.
importance = deque([[i, imp] for i, imp in enumerate(importance)])
count = 0
while importance:
# 가장 중요도가 높은 문서의 중요도 저장
max_imp = max(importance, key=lambda x: x[1])[1]
# 큐의 첫 번째 값이 가장 중요도가 높다면
if importance[0][1] == max_imp:
# 문서를 프린트 하고
popped = importance.popleft()
# 몇 번째인지 센다.
count += 1
# 출력하는 문서의 인덱스가 타겟과 일치한다면 순서 출력 후 반복문 종료
if popped[0] == target:
print(count)
break
else:
# 중요도가 낮다면 큐에서 빼낸 뒤 큐의 가장 뒤에 다시 추가한다.
importance.append(importance.popleft())
처음에는 문제조차 이해를 못해서 문제를 계속 읽어봤다.
예제 입력 1:
3 <- 테스트 케이스 수
1 0 <- (큐에 대기중인 문서의 수, 몇 번째에 출력되는지 찾아야 할 문서의 인덱스 번호)
5 <- 문서들의 중요도
??
4 2 <- (큐에 대기중인 문서의 수, 몇 번째에 출력되는지 찾아야 할 문서의 인덱스 번호
)
1 2 3 4 <- 문서들의 중요도
이 예제로 보면 큐의 2 번째 인덱스 (여기서는 1, 2, 3
, 4)가 몇 번째로 출력되는지 찾아라는 얘기였다.
문제 이름에 대놓고 써져있지만 큐를 써서 풀면 된다.
중요도가 같은 문서가 있을 수도 있고, 목표 인덱스의 출력 순서를 물어보는 것이기 때문에 중요도
와 인덱스
를 큐에 저장해 문제를 해결했다.