[Python] BOJ 1966 - 프린터 큐(Queue)
728x90
반응형
https://www.acmicpc.net/problem/1966
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.