Python으로 구현한 1966번 프린터 큐 문제 풀이입니다.
https://www.acmicpc.net/problem/1966
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의 가장 첫 번째 요소를 각각 빼내어 뒤로 넘겨 준다.
'백준(Python) 풀이 > 구현' 카테고리의 다른 글
백준(Python) 17135번 캐슬 디펜스 풀이 (0) | 2022.08.26 |
---|---|
백준(Python) 5430번 AC 풀이 (0) | 2022.07.07 |
백준(Python) 2750번 수 정렬하기 풀이 (0) | 2022.06.29 |
백준(Python) 23290번 마법사 상어와 복제 풀이 (0) | 2022.04.30 |
백준(Python) 23291번 어항 정리 풀이 (0) | 2022.04.29 |