백준 1966번 바로가기
나의 풀이#
for _ in range(int(input())):
n, i = map(int, input().split())
queue = list(map(int, input().split()))
count = 0
while queue:
i -= 1
if max(queue) == (out:=queue.pop(0)):
count += 1
if i < 0:
print(count)
break
else:
queue.append(out)
if i < 0:
i = len(queue) -1
고수의 풀이#
for _ in range(int(input())):
n,m=map(int,input().split())
t=list(map(int,input().split()))
a=sorted(t, reverse=True);j=0
i=0
while True:
if a[j] == t[i]:
j+=1
if i == m:
print(j)
break
i=(i+1)%n
출처
CODE REVIEW#
- 관심있는 대상이 out되는지 아닌지 판단하는 과정이 은근 까다로운 문제였다. out될 때까지 count를 하나씩 늘려나가는 방식이었다.
- 고수의 풀이를 보면, 애초에 중요도를 내림차순으로 정렬하고, 기존의 중요도 리스트와 비교하면서 count을 세어나갔다.