Koala - 15기/기초 알고리즘 스터디

[백준/Python] 1966번: 프린터 큐

kim2001sh 2024. 8. 12. 03:51

문제

 

풀이

테스트 케이스의 수를 받고 큐 자료구조에 중요도를 넣는다.

주어진 입력값 중 m 값을 계속 바꾸며 내가 찾는 문서가 어디 있는지  추적한다.

문서를 인쇄할 때마다 카운트를 늘려 몇 번째로 출력되는지를 찾는다.

내가 찾는 문서가 가장 앞에 있고, 중요도가 최댓값과 같다면 그 때 출력할 수 있음을 유의하며 코드를 작성한다.

코드

from collections import deque
t = int(input())

for _ in range(t):
    n, m = map(int, input().split())
    lst = list(map(int, input().split()))
    q = deque()
    cnt = 1
   
    for i in lst:
        q.append(i)
    
    while True:
        if max(q) == q[0]:
            if m == 0:
                print(cnt)
                break
            else:
                q.popleft()
                cnt += 1
                if m == 0:
                    m = len(q) - 1
                else:
                    m -= 1
        else:
            x = q.popleft()
            q.append(x)
            
            if m == 0:
                m = len(q) - 1
            else:
                m -= 1