1. 문제와 예제
2. 전체 코드
from collections import deque
import sys
input = sys.stdin.readline
# 입력 받기
T = int(input().rstrip()) # 테스트케이스 수
for _ in range(T):
N, M = map(int, input().split()) # 문서 개수, 궁금한 문서가 몇 번째에 놓여 있는지
deq = deque(list(map(int, input().split()))) # 큐
res = 0 # 문서가 몇 번쨰로 인쇄되는지
while deq:
max_num = max(deq)
front = deq.popleft()
M -= 1
if (max_num == front):
res += 1
if M < 0:
print(res)
break
else:
deq.append(front) # 문서를 인쇄하지 않고 큐의 가장 뒤에 재배치
if M < 0:
M = len(deq) - 1
3. 풀이
이렇게 가장 앞에 있는 요소를 삭제하고(deq.popleft()) 가장 뒤에 요소를 추가하는(deq.append(X)) 등의 과정을 하는 문제에서는 큐 구조를 활용해야 한다. 예제 하나를 가지고 각 과정에 따른 전개를 정리하면서 규칙성을 찾았다.
'백준' 카테고리의 다른 글
[백준] 4949번 파이썬 (균형잡힌 세상) (0) | 2024.02.23 |
---|---|
[백준] 2231번 파이썬 (분해합) (0) | 2024.02.23 |
[백준] 11866번 파이썬 (요세푸스 문제 0) (0) | 2024.02.22 |
[백준] 9012번 파이썬 (괄호) (0) | 2024.02.22 |
[백준] 2609번 파이썬 (최대공약수와 최소공배수) (0) | 2024.02.19 |