[BOJ] #1966 - 프린터 큐
2021. 6. 12. 04:13ㆍProblem Solving/Online Judge
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
** 문제 유형
- 큐, 구현, 그리디
** 풀이
- 데이터의 개수가 많지 않으므로 (N <= 100), 단순히 문제에서 요구하는 대로 구현
- 현재 리스트에서 가장 큰 수가 앞에 올 때까지 회전시킨 뒤에 추출
# 방법 1
tc_nums = int(input())
for i in range(tc_nums):
n, search = list(map(int, input().split(' ')))
priorities = list(map(int, input().split(' ')))
queue = [(idx, p) for idx, p in enumerate(priorities)] # [(위치, 우선순위)]
cnt = 0
while True:
if any(queue[0][1] < queue[i][1] for i in range(1, len(queue))): # 맨 앞의 원소보다 큰 원소가 있는 경우
queue.append(queue.pop(0))
else: # 맨 앞의 원소가 제일 큰 수일 경우
cnt += 1
if queue[0][0] == search:
break
queue.pop(0)
print(cnt)
# 방법 2
test_case = int(input())
for _ in range(test_case):
n, m = list(map(int, input().split(' ')))
queue = list(map(int, input().split(' ')))
queue = [(i, idx) for idx, i in enumerate(queue)] # [(우선순위, 위치)]
count = 0
while True:
if queue[0][0] == max(queue, key=lambda x: x[0])[0]:
count += 1
if queue[0][1] == m:
print(count)
break
else:
queue.pop(0)
else:
queue.append(queue.pop(0))
'Problem Solving > Online Judge' 카테고리의 다른 글
[BOJ] #10930 - SHA-256 (0) | 2021.06.13 |
---|---|
[BOJ] #5397 - 키로거 (0) | 2021.06.13 |
[BOJ] #1874 - 스택 수열 (0) | 2021.06.12 |
[BOJ] #2798 - 블랙잭 (0) | 2021.06.12 |
[BOJ] #2920 - 음계 (0) | 2021.06.11 |