코딩하는 해맑은 거북이
[Python] 프린터 큐 - 백준 본문
해당 글은 백준 1966번 '프린터 큐' 문제를 다룬다.
문제
https://www.acmicpc.net/problem/1966
설명
해당 문제는 리스트의 인덱스를 이용해서 간단하게 풀 수 있는지 알았지만, 3번째 테스트케이스를 진행하면서 중요도가 같은 문서들로 인덱스 접근은 어렵다고 느꼈다. 따라서 큐의 rotate와 popleft를 이용하여 해결하였다.
현재 큐의 0번째가 max 값이 아니라면 왼쪽으로 한 칸씩 회전시키고, max 값이라면 popleft를 하고 문서를 출력했으므로 result를 +1 시켜준다. 이때, 찾고자하는 m번째 인덱스값도 같이 1칸씩 이동시켜주어야 한다.
그리고 큐의 0번째가 max 값이면서 찾고자 하는 인덱스인 m도 0이라면, while문을 종료시켜고 result를 출력시켜주면 된다.
코드
from collections import deque
T = int(input())
for t in range(T):
n, m = map(int, input().split())
queue = deque(list(map(int, input().split())))
result = 0
while queue:
max_value = max(queue)
if queue[0] != max_value:
queue.rotate(-1)
else:
queue.popleft()
result += 1
if m == 0:
break
m = (m - 1) % len(queue)
print(result)
'코딩테스트' 카테고리의 다른 글
[Python] 종이의 개수 - 백준 (분할정복) (0) | 2023.12.10 |
---|---|
[Python] 쿼드트리 - 백준 (분할정복) (0) | 2023.12.05 |
[Python] N과 M (4) - 백준 (DFS) (0) | 2023.11.28 |
[Python] 폴리오미노 - 백준 (0) | 2023.11.23 |
[Python] 1로 만들기 2 - 백준 (DP) (0) | 2023.11.06 |
Comments