728x90

2022.03.08

백준 1966 프린터 큐

#1966 프린터 큐
from collections import deque
# 테스트 케이스  T
T = int(input())

for i in range(T):
  N,M = map(int, input().split())
  
  # 인덱스의 변화를 보여줄 큐, idx를 하나 만든후 인덱스를 저장한다.
  idx = deque()
  for j in range(N):
    idx.append(j)
    
  # arr에 우선순위로 주어진 입력값을 저장한다.
  arr = deque()
  array = list(map(int, input().split()))
  for j in array:
    arr.append(j)
  
  # num은 queue에서 값이 pop될 때마다 +1 해줘 M번째 값이 몇 번째로 출력되는지 계산한다.
  num = 1
  while True:
    if M == idx[0] and arr[0] == max(arr):
      print(num)
      break
    else:
      if max(arr) == arr[0]:
        arr.popleft()
        idx.popleft()
        num += 1
      else:
        arr.append(arr.popleft())
        idx.append(idx.popleft())

 

그동안 고민하면서 못 풀었던 문제를 드디어 풀었다.

처음에는 큐 하나만 이용해서 풀려고 하다가 인덱스도 큐로 만들어서 변화를 주어야겠구나 생각을 하게 되었고

또 거기서 한동안 못풀다가 while문에서 멈추는 조건을 잘 못주고 있었다는 걸 깨닫고 풀 수 있었다.

728x90

'Algorithm' 카테고리의 다른 글

백준 14501 파이썬  (0) 2022.02.26
백준 13458 파이썬  (0) 2022.02.25
백준 1654 파이썬  (0) 2022.02.23
백준 10816 파이썬  (0) 2022.02.22
백준 10773 파이썬  (0) 2022.02.15

+ Recent posts