문제
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
알고리즘
- 테스트 케이스만큼 반복하여 인쇄 횟수를 출력한다.
- 문서의 중요도와 인쇄 순서를 heap 리스트에 추가한다.
- 반복문을 통해 첫 번재 문서의 중요도가 제일 높은지 확인하여 문제를 수행한다.
코드
import sys
t = int(sys.stdin.readline())
# 테스트 케이스만큼 반복
for _ in range(t):
n, m = map(int, sys.stdin.readline().split())
k = list(map(int, sys.stdin.readline().split()))
heap = []
# 문서의 중요도와 인쇄 순서를 heap에 추가
for i in range(n):
heap.append([k[i], i])
cnt = 0 # 인쇄 횟수
while True:
# 제일 첫 번째 문서의 중요도가 제일 높을 경우
if heap[0][0] == max(heap)[0]:
cnt += 1 # 카운트
# 찾고 있는 순서이면 멈춘다.
if heap[0][1] == m:
break
# 찾고있는 순서가 아니라면 인쇄한다.
heap.pop(0)
# 제일 첫 번째 문서의 중요도가 제일 높지 않은 경우
else:
# 첫 번째 문서를 맨 뒤로 추가한다.
heap.append(heap.pop(0))
print(cnt)
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 2164번(파이썬): 카드2 (0) | 2021.09.19 |
---|---|
[baekjoon] 백준 11866번(파이썬): 요세푸스 문제 0 (0) | 2021.09.18 |
[baekjoon] 백준 10773번(파이썬): 제로 (0) | 2021.09.16 |
[baekjoon] 백준 1918번(파이썬): 후위 표기식 (0) | 2021.09.16 |
[baekjoon] 백준 11656번(파이썬): 접미사 배열 (0) | 2021.09.14 |