[백준 1966 파이썬] - 프린터 큐

zsunny·2022년 9월 10일
1

📌 문제

💯 정답

import sys
from collections import deque
input = sys.stdin.readline

tc = int(input())
for _ in range(tc):
    n, m = map(int, input().split())
    que = deque(list(map(int, input().split())))    # 중요도
    idx = deque(list(range(n)))                     # 인덱스
    cnt = 0
    while que:
        if que[0] == max(que):      # 첫번째 요소가 최댓값이면
            cnt += 1                # 카운트
            que.popleft()           # pop
            if idx.popleft() == m:  # 인덱스가 m과 같을 때
                print(cnt)          # 카운트 값 출력
        else:
            que.append(que.popleft())   # 왼쪽 값 pop해 append
            idx.append(idx.popleft())

📝 설명

• que의 첫번째 요소가 최댓값이 될 때 까지 왼쪽값을 pop해 오른쪽에 append 한다.
  (이때, index값도 동일하게 움직여야 한다.)
• que의 첫번째 요소가 최댓값이면 카운트 1을 하고 pop한다. 이때 idx값이 m이면
  즉, 궁금한 문서가 맞으면 cnt를 출력하고 아니면 m의 값이 될 때까지 순서대로 max값을 pop하며 카운트한 값을 출력한다.
profile
매일 성장하는 예비 웹 개발자 🌱

0개의 댓글