본문 바로가기
👩🏻‍💻 Front-end/👾 Algorithm

백준 1966 - 프린터 큐 (Python)

by su-no 2022. 5. 25.

코드

from sys import stdin

test_case = int(stdin.readline())

for _ in range(test_case):
    # n: 문서의 개수
    # m: 몇 번째로 인쇄되었는지 궁금한 문서
    # imp: 각 문서의 중요도
    # idx: 인쇄 명령을 받은 순서
    
    n, m = map(int, stdin.readline().split())
    imp = list(map(int, stdin.readline().split()))
    idx = [i for i in range(n)]

    order = 0
    while(True):
        if imp[0] == max(imp): # 1
            order += 1

            if idx[0] != m: # 2
                del imp[0]
                del idx[0]
            else: # 3
                print(order)
                break
        else:
            imp.append(imp[0]) # 4
            idx.append(idx[0])
            del imp[0]
            del idx[0]

 

풀이

#1: 프린터 Queue의 첫번째 문서의 중요도가 가장 클 때, 그 문서를 출력하고 순서를 1 증각시킨다.

#2: 출력한 문서 (첫번째 문서)가 순서를 알고자 하는 문서(m)이 아닐 경우, 목록에서 지운다.

#3: 출력한 문서가 순서를 알고자 하는 문서일 경우, 순서를 출력하고 종료한다.

#4: 프린터 Queue의 첫번째 문서의 중요도가 max가 아닐 경우, 목록의 첫번째에서 지우고, 맨 뒤에 다시 추가한다.