알고리즘

[알고리즘] 백준 1966 - 프린터 큐

j9972 2022. 11. 9. 16:34
728x90

1. 문제

프린터 큐

 

2. 접근

1. 문제의 제목 처럼 큐를 사용해야한다

    1 - 1. 큐는 deque 혹은 list를 이용한 큐 방식을 사용하면 된다

2. 주의 할점은 m의 위치에 있는 target 값이다

    2 - 1. 테스트 케이스의 마지막 번호와 같이 같은 수들이 있을때는 같은 값으로 인지해 정답을 결정해 버리기 때문이다.

3. 따라서 m 의 값을 -1 씩 해주고 m == 0 일 경우 출력되는게 아니라면 m = len(q) - 1 을 해준다

    3 - 1. -1 을 해주는 이유는 인덱스가 0부터 시작이기 때문이다.

 

3. 풀이

# 프린터 큐
import sys
input = sys.stdin.readline


for _ in range(int(input())):
    # 개수, 뽑고 싶은 유인물 위치
    n, m = map(int, input().split())
    count = 0
    q = list(map(int, input().split()))

    while True:
        target = q[m]

        if m == -1:
            m = len(q) - 1

        if q[0] < max(q):
            q.append(q[0])
            q.pop(0)
            m -= 1
        else:
            count += 1
            if q[0] == target and m == 0:
                print(count)
                break
            else:
                q.pop(0)
                m -= 1