[파이썬/python] 백준 1966번 : 프린터 큐 (🥈3)

from collections import deque

for i in range(int(input())):
    li = []
    a,b = map(int,input().split())
    c = deque(list(map(int,input().split())))
    file = deque([i for i in range(1,a+1)])
    
    while c:
        if max(c) == c[0]:
            li.append(file.popleft())
            c.popleft()
        else:
            file.append(file.popleft())
            c.append(c.popleft())
        
    print(li.index(b+1)+1)

중요도 리스트 c의 0번째 인덱스가 가장 큰 수가 될 때까지 c.append(c.popleft)를 반복한다. 마찬가지로 문서가 담긴 file 리스트도 file.append(file.popleft())를 반복한다.

중요도 리스트 c의 0번째 인덱스가 가장 큰 수가 되면 중요도 순서로 문서를 담아 줄 리스트 li에 file 리스트의 가장 첫 번째 문서를 담아주고, 그 문서는 삭제하기 위해 li.append(file.popleft())를 해 준다. c의 0 번째 인덱스는 popleft로 삭제해 준다.

이와 같은 과정을 c안의 요소가 모두 삭제될 때까지 반복해 준 후, li에서 b+1 값의 인덱스를 찾은 후(만약 b가 2이면 찾아야 할 숫자는 3이 되니까) 또다시 +1 해 주었다(문제에서는 0부터 시작하는 인덱스 값이 아니라 1부터 시작할 때의 값을 찾기 때문에 +1을 해 주어야 한다).

comment