본문 바로가기
Computer Science/Algorithm

[백준] 1966 - 프린터 큐 (Python)

by 수제햄버거 2021. 2. 11.
728x90
반응형

문제 출처 :

www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

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

www.acmicpc.net

문제 풀이 :

  • python의 기본 라이브러리 중에 deque를 사용해서 풀었다. 사실 queue를 썻어도 크게 다를 건 없었을 꺼 같다.

 

  1. 우선 입력된 프린터 문서들을 tuple 형태로 idx와 중요도를 papers deque에 저장했다.
  2. 이후 가장 왼쪽부터 pop 한후에 나머지 문서들의 중요도를 비교하며 만약 더 중요한 중요도가 있다면 pop 햇던 문서를 다시 넣어주며 cnt_con을 off해주어서 다시 처음부터 시작한다
  3. 중요도가 더 큰 문서가 없는 경우엔 cnt_con이 on으로 되어있으므로 출력이고 ans+1 한 후에 만약 내가 원하는 문서 번호이면 답을 출력하고 끝낸다.
from collections import deque

t = int(input())

for T in range(t):
    n,m = map(int,input().split())
    papers = list(map(int,input().split()))
    temp =[]
    for i in range(len(papers)):
        temp.append((i,papers[i]))
    papers = deque(temp)
    ans=0
    while(True):
        p_idx ,p_prior = papers.popleft()
        cnt_con = 1
        for i in range(0,len(papers)):
            if(p_prior<papers[i][1]):
                papers.append((p_idx,p_prior))
                cnt_con = 0
                break

        if(cnt_con):
            ans+=1
            if(p_idx == m):
                print(ans)
                break
반응형