Algorithm/Python
[Python] 백준 - 17225번 세훈이의 선물가게(Priority Queue)
힘팽
2022. 2. 23. 23:46
◈ 오류 정정 및 피드백 환영
17225번: 세훈이의 선물가게
첫 줄에 상민이가 선물 하나를 포장하는 데 걸리는 시간 A, 지수가 선물 하나를 포장하는 데 걸리는 시간 B, 어제 세훈이 가게의 손님 수 N(1 ≤ N ≤ 1,000)이 주어진다. 이후 N개의 줄에 걸쳐 1번부
www.acmicpc.net
🔎문제 분석
예제 그림 자체가 큐를 그린 것이고, 상민이와 지수 중에 선택을 해서 큐에 저장해야 하기 때문에 순위를 고려할 수 있는 우선순위 큐(Priority Queue)로 접근하면 된다.
🤦♀️유의 사항
이전 포장이 끝나지 않았는데 주문을 받는 경우를 고려해야 한다.
주문 시작 시간을 이전 포장 종료 시간으로 업데이트한 뒤에 큐에 저장해야 한다.
import heapq as hq
import sys
input = sys.stdin.readline
a, b, n = map(int, input().split())
res = []
t_b = t_r = 0
for _ in range(n):
t, c, m = input().split()
t = int(t)
m = int(m)
if c=="B":
if t_b < t:
t_b=t
for _ in range(m):
hq.heappush(res, (t_b,"B"))
t_b += a
else:
if t_r < t:
t_r=t
for _ in range(m):
hq.heappush(res, (t_r,"R"))
t_r += b
dic = {"B":[],"R":[]}
num = 1
for _ in range(len(res)):
_, c = hq.heappop(res)
dic[c].append(num)
num += 1
for k, v in dic.items():
print(len(v))
print(*v, sep=" ")