[백준] 1966번: 프린터 큐

가영·2021년 2월 17일
0

알고리즘

목록 보기
21/41
post-thumbnail

이 문제는 원하는 인덱스의 변화를 추적해야하는 큐 문제였다. 큐의 사이즈가 계속 변한다는 걸 잊어버리고 N을 갱신하지 않아서 런타임에러가 떴었다. 흑 알려주셔서 감사합니다🙏🏻

정답코드

from _collections import deque
T = int(input())
result = []
for _ in range(T):
    N, index = map(int, input().split())
    queue = deque(map(int, input().split()))
    count = 0
    while True:
        if queue[0] == max(queue):
            count += 1
            
            if index == 0: # 우리가 원하는 숫자가 최댓값이면서 front임!
                result.append(count)
                break
            
            queue.popleft()
            N -= 1 #N은 바뀌잖아
        
        else:
            queue.append(queue.popleft())
        index = (N + index - 1) % N 
for num in result:
    print(num)

파이썬 큐를 사용할 때 꼭 지키기: collections.deque를 사용하기!

0개의 댓글