[Python] BOJ 1966 - 프린터 큐(Queue)
728x90
반응형
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를
www.acmicpc.net
import sys
input = sys.stdin.readline
t = int(input())
for i in range(t):
q = []
N,M = map(int,input().split())
queue = list(map(int,input().split()))
for i in queue:
q.append(i)
p = M
cnt = 0
while(True):
if(max(q) == q[0]):
q.pop(0)
cnt += 1
if(p == 0):
print(cnt)
break
else:
p -= 1
if(p<0):
p = len(q)-1
else:
p -= 1
if(p<0):
p = len(q)-1
q.append(q.pop(0))
출력 순서가 궁금한 인덱스 M을 p에 저장하고 반복문을 돌려가며 queue의 첫번째 원소가 max이면 pop하는 식으로 코드를 짰다. 큐의 첫번째 원소가 max가 아니라면 프린트를 하지않으므로 pop한 뒤 맨뒤로 보내고 우리가 궁금해하는 인덱스 값이 한칸 앞으로 오므로 p를 1감소시켰다. (p가 0보다 작아지면 다시 맨뒤로 보내야하므로 len(q)-1 로 설정)
또한 max(q)가 q[0]일때 p가 0이라면 우리가 궁금해하는 문서가 프린트되는 상황이므로 cnt를 출력하고 종료하고
아니면 q[0]을 pop하고 p를 1감소시키는 식으로 코드를 짰다.
728x90
반응형
'문제풀이 > BaekjoonOnlineJudge' 카테고리의 다른 글
[Python] BOJ 2609 - 최대공약수와 최소공배수(유클리드 호제법) (0) | 2020.02.18 |
---|---|
[Python] BOJ 5430 - AC(deque) (0) | 2020.02.12 |
[Python] BOJ 1158 - 요세푸스 문제(Circular Linked List) (0) | 2020.02.11 |
[Python] BOJ 1406 - 에디터(Doubly Linked List) (0) | 2020.02.08 |
[Python] BOJ 1920 - 수 찾기(Binary Search) (0) | 2020.01.27 |
TAGS.