[백준 22252] 정보 상인 호석

Junyoung Park·2022년 2월 28일
0

코딩테스트

목록 보기
128/631
post-thumbnail

1. 문제 설명

정보 상인 호석

2. 문제 분석

여러 개의 우선순위 큐를 그때마다 만들어 접근하는 문제. 딕셔너리와 힙을 활용하자.

3. 나의 풀이

import heapq
import sys

q_len = int(sys.stdin.readline().rstrip())
names = {}
total = 0
for _ in range(q_len):
    contents = list(sys.stdin.readline().rstrip().split())
    q = contents[0]
    name = contents[1]
    content = contents[2:]
    if q == '1':
        k = int(content[0])
        content = map(int, content[1:])
        name_content = names.get(name, [])
        for c in content:
            heapq.heappush(name_content, -1 * c)
        names[name] = name_content
        # 딕셔너리로 name 별 max_heap을 기록한다.
    else:
        b = int(*content)
        name_content = names.get(name, [])
        if len(name_content) <= b: b = len(name_content)
        for _ in range(b):
            total += -1 * heapq.heappop(name_content)
        # 딕셔너리로 얻은 name 별 max_heap에서 k개를 뽑아 더한다.

print(total)
profile
JUST DO IT

0개의 댓글