코드

test_case = int(input())

for _ in range(test_case):
    n,m = map(int, input().split())
    queue = list(map(int, input().split()))
    queue = [(i, index) for index, i in enumerate(queue)] # 튜플 형태로
    # [(2,0), (1,1), (4,2), (3,3)]
    
    count = 0
    while True:
        if queue[0][0] == max(queue, key=lambda x: x[0])[0]: #맨앞==현재큐의 가장큰중요도
            count += 1
            if queue[0][1] == m:
                print(count)
                break
            else:
                queue.pop(0)

        else: # 맨앞이 현재 큐의 가장 큰 중요도가 아닐 때
            queue.append(queue.pop(0)) # 큐의 맨앞을 큐의 맨뒤로 옮기기

 

입력 예제를 이해하는데 매우 오래걸렸다;;

큐가 어떻게 작동하는지 알아야 하고,

튜플 형태로 큐를 변환할 수 있어야 한다.

 

튜플 형태로 큐를 변환하면 따로 인덱스를 나타내는 리스트를 만들지 않아도 된다. 굉장히 유용하다.


enumerate

  • 반복문 사용 시 몇 번째 반복문인지 확인이 필요할 수 있다. 이때 사용한다.
  • 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환한다.
t = [1, 5, 7, 33, 39, 52]
for p in enumerate(t):
print(p)

>>
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)

 

for i, v in enumerate(t):
print("index : {}, value: {}".format(i,v))

>>
index : 0, value: 1
index : 1, value: 5
index : 2, value: 7
index : 3, value: 33
index : 4, value: 39
index : 5, value: 52
복사했습니다!