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문에서 멈추는 조건을 잘 못주고 있었다는 걸 깨닫고 풀 수 있었다.
'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 |