[백준] 15903번 카드 합체 놀이

거북이·2023년 9월 10일
0

백준[실버1]

목록 보기
55/67
post-thumbnail

💡문제접근

  • heap을 이용해서 풀 수 있는 문제다.
  • n장의 카드에 쓰여있는 수를 모두 더한 값이 가장 작게 만드는 것이 최종 목표라고 제시되어있다. 그러려면 n장의 카드 중에서 가장 작은 수 2개를 골라 더한 후 heap에 2번을 넣어서 카드 합체를 진행하면 된다.

💡코드(메모리 : 33456KB, 시간 : 56ms)

import heapq
import sys
input = sys.stdin.readline

# n개의 카드 + m번의 카드 합체
n, m = map(int, input().strip().split())
arr = list(map(int, input().strip().split()))
heapq.heapify(arr)

for _ in range(m):
    a = heapq.heappop(arr)
    b = heapq.heappop(arr)
    temp = a + b
    heapq.heappush(arr, temp)
    heapq.heappush(arr, temp)
print(sum(arr))

💡소요시간 : 4m

0개의 댓글