1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
💡 알고리즘
자료구조, 큐
💡 접근방법
- 원소들을 Queue의 가장 뒤에 재배치하고, 가장 앞에 있는 원소는 pop해야한다.
→ 앞뒤로 pop, append가 자유로운 deque 사용 - 주어진 예시를 직접 그려보면, 두가지를 신경써서 구현해야 함을 알 수 있다.
- M번째 수가 몇 번째로 큰 중요도를 갖는가 → deque의 0번째 원소가 max인지 확인
- M의 중요도와 같은 중요도가 있는가 → count변수로 해결
💡 코드
from collections import deque
T = int(input())
for j in range (T) :
N, M = map(int, input().split())
print_list = input().split(' ')
count = 1
dq = deque(print_list)
for i in range(len(print_list)):
print_list[i] = int(print_list[i])
while(True) :
if dq[0] != max(dq) :
dq.append(dq[0])
dq.popleft()
if M == 0 :
M = len(dq) - 1
else :
M -= 1
else :
dq.popleft()
if M == 0 :
print(count)
break
else :
count += 1
M -= 1
'Algorithm > Data Structure' 카테고리의 다른 글
[Java] 백준 #1158 요세푸스 문제 (0) | 2022.07.11 |
---|---|
[Python] 백준 #11866 요세푸스 문제 0 (0) | 2022.03.03 |