백준 문풀
[Python] 구현 - 1966.프린터큐(실3) / 큐
브로코딩
2023. 8. 10. 12:17
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
>>문제포인트
:처음에는 heapq로 구현했었는데 동일 중요도가 있을 경우 순서계산이 모호해짐
=> 문제에서 제시한대로 큐를 기반으로 충실히 구현하는 게 포인트
>>느낀점
파이썬을 통한 deque와 heapq의 사용법을 자세히 알아두자.
from collections import deque
num= int(input())
for _ in range(num):
q= deque()
#문서의 개수와 궁금한 값
n, k= map(int, input().split())
weight= list(map(int, input().split()))
for i in range(n):
q.append([weight[i],i]) #[중요도,순서]별로 넣어줌
#나오는 순서 담을 것
cnt=0
while(q):
paper = q.popleft()
#프린트가 가능하고 찾는 순서일 때 => 정답출력
if paper[0]==max(weight) and paper[1]==k:
print(cnt+1)
break
#중요도가 가장 높지만 찾는 순서가 아닐 때-> 중요도 최고값 갱신/순서+1
elif paper[0]==max(weight):
cnt+=1
weight.remove(max(weight))
#프린트가 불가 -> 다시 뒤로 넣기
else:
q.append(paper)