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

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

shlinn 2023. 2. 6. 21:08

https://www.acmicpc.net/problem/1966

 

1966번: 프린터 큐

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

www.acmicpc.net

 

문제 코드

 

문제 풀이

문제에서

가장 앞에 있는 문서의 중요도가 가장 높으면 바로 인쇄한다

= popleft 를 사용해야 하므로 deque 를 사용.

 

for 문을 활용하여 T 만큼 반복, 반복문 내에서 N,M 과 N개의 문서 중요도 a를 입력.

 

whlie을 활용하여 원하는 문서 a[M] 을 출력할 때 까지 반복.

 

1) a[M] 이 a의 맨 앞에 있을 때,

1-1) 이를 a의 가장 큰 수와 비교하여 a[M] 이 가장 크다면 현재 출력순서인 cnt 를 출력한 후 break

1-2) a[M] 이 가장 큰 수가 아니라면 이를 맨 뒤로 보내고 다시 반복.

 

2) a[M] 이 a의 맨 앞에 있지 않다면 a[0]이 a에서 가장 큰 수인지 확인.

2-1) 가장 큰 수라면 이를 popleft 하고 a[0]이 제거되었으므로 문서의 개수 N 과 원하는 문서의 번호인 M 을 -1 해줌.

2-2) 가장 큰 수가 아니라면 이를 맨 뒤로 보내고 다시 반복.