[백준 15903] 카드 합체 놀이

Junyoung Park·2022년 2월 27일
0

코딩테스트

목록 보기
114/631
post-thumbnail

1. 문제 설명

카드 합체 놀이

2. 문제 분석

현재 상태의 최솟값을 항상 꺼내려면 우선순위 큐를 택하자.

3. 나의 풀이

import sys
import heapq

n, m = map(int, input().split())
heap = []

for num in map(int, sys.stdin.readline().rstrip().split()):
    heapq.heappush(heap, num)

for _ in range(m):
    num1 = heapq.heappop(heap)
    num2 = heapq.heappop(heap)
    # 현재 최솟값 2개를 뽑는다.
    num3 = num1 + num2
    # 덮어씌울 수를 만들자.
    heapq.heappush(heap, num3)
    heapq.heappush(heap, num3)
    # 덮어씌운 수를 다시 힙으로 넣는다.
print(sum(heap))
# 현재 힙 내의 모든 카드 수를 합친다.


profile
JUST DO IT

0개의 댓글