알고리즘
[알고리즘] 백준 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