from collections import deque
def importance(arr,arr1,n):
k = 0
while arr:
idx, imp = arr.popleft()
left = [i for i,j in arr if j>imp]
if left:
arr.append((idx, imp))
else:
k += 1 # 프린트
if idx == n and arr1[n] == imp:
return k
return k
T = int(input())
for _ in range(T):
n,m = map(int,input().split())
ls = list(map(int,input().split()))
arr1 = {}
for i,j in enumerate(ls):
arr1[i]=j
arr = deque(list(arr1.items()))
print(importance(arr,arr1,m))
풀이
딕셔너리, (index, value)를 원소로 갖는 큐, 대소 비교를 사용하는 시뮬레이션 문제라 복잡하게 느껴졌다.
k는 프린트한 값이 있을 때만 +1를 해야함에 유의해야하고, 항상 느끼는 거지만 문제풀이 시 필기로 알고리즘 원리를 체감하는게 중요한 것 같다.
k처리에서 가장 많은 시간이 걸렸고, idx==n and arr1[n]==imp도 처음에는 arr1[n] == imp만 확인해서 에러가 발생했었다. (n이 달라도 imp가 같은 경우가 존재함을 고려하지 않음)
그리고 다시 보니 이 부분은 (idx, imp) == (n, arr1[n])로 변경할 수 있을 것 같다.