본문 바로가기
코딩테스트

[백준][파이썬]1966번: 프린터 큐

by 과아아앙 2021. 4. 7.

문제 출처 : www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에

www.acmicpc.net

내 풀이

from collections import deque

k = int(input())

for i in range(k):
    arr = deque() 
    answer = 0
    cnt = 0
    n, m = map(int, input().split())
    doc = list(map(int, input().split()))

    for i in range(n):
        arr.append((doc[i], i))
    
    doc.sort(reverse = True)
    check = doc[answer]
      
    while arr:
        x, y = arr.popleft()
        if x < check:
            arr.append((x, y))
        else:
            answer += 1
            if y == m:
                print(answer)
                break
            else:
                check = doc[answer]

1. 문서의 중요도 최댓값 저장

2. 가장 중요한 문서보다 값이 작으면 뒤로 돌려보냄

3. 가장 중요한 문서와 값이 같으면 버리고 answer에 1 더함

4. 3번에 이어서 이 때 문서의 번호가 확인하고자 하는 문서의 번호와 일치하면 프린트하고 종료