Hanbit the Developer
[그리디] Python - 15903번, 카드 합체 놀이 본문
import heapq
import sys
input = sys.stdin.readline
def getMergedCards(cards):
newCard = heapq.heappop(cards) + heapq.heappop(cards)
heapq.heappush(cards, newCard)
heapq.heappush(cards, newCard)
return cards
n, m = map(int, input().split())
cards = list(map(int, input().split()))
heapq.heapify(cards)
for _ in range(m):
cards = getMergedCards(cards)
print(sum(cards))
가장 작은 두 수를 계속해서 합체하면 된다. 이를 위해서 우선순위 큐를 사용하였다.
간결하여 코드 가독성이 좋으며 시간 복잡도도 88ms로, 1등(76ms)과 유사하다.
'Algorithm > 백준' 카테고리의 다른 글
[그리디] Python - 13904번, 과제(시간복잡도 4등) (0) | 2021.04.05 |
---|---|
[그리디] Python - 2212번, 센서[Grid] Python - 2212번, 센서 (0) | 2021.04.04 |
[그리디] Python - 16953번, A → B(A to B) (0) | 2021.03.31 |
[그리디] Python - 1449번, 수리공 항승 (0) | 2021.03.30 |
[그리디] Python - 13305번, 주유소 (0) | 2021.03.29 |