백준(Python) 풀이/구현
백준(Python) 1966번 프린터 큐 풀이
개발윗미
2022. 7. 7. 16:27
Python으로 구현한 1966번 프린터 큐 문제 풀이입니다.
https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
t = int(input())
for _ in range(t) :
n, m = map(int, input().split())
priority = list(map(int, input().split()))
check = [0 for _ in range(n)]
check[m] = 1
count = 0
while True :
if priority[0] == max(priority) :
count += 1
if check[0] == 1 : # 찾을 값이면
print(count)
break
else :
priority.pop(0)
check.pop(0)
else :
priority.append(priority.pop(0))
check.append(check.pop(0))
1. 각 테스트 케이스마다 입력받은 n개의 0 값을 저장한 check 리스트를 생성하고, check[m] 을 1로 갱신한다.
2. 아래와 같은 작업을 반복 수행한다.
- 만약 priority의 가장 첫 번째 요소가 최댓값과 같다면 count를 1증가시킨다.
- 만약 check의 가장 첫 번째 요소가 1일 경우 찾을 값이므로 count를 출력한 후 break 한다.
- check[0]이 1이 아닐 경우 priority의 가장 첫 번째 요소와 check의 가장 첫 번째 요소를 빼낸다.
- 만약 priority[0]이 최댓값이 아닐 경우 priority의 가장 첫 번째 요소와 check의 가장 첫 번째 요소를 각각 빼내어 뒤로 넘겨 준다.