https://www.acmicpc.net/problem/15903
풀이
우선순위 큐를 이용하여 풀었습니다.
카드 숫자를 heap 배열에 넣고 m번동안 가장 작은 힙 2개를 pop하고
더해서 다시 push하는 방식으로 구현하였습니다.
import heapq
n, m = map(int, input().split())
cards = list(map(int, input().split()))
heap = []
for card in cards:
heapq.heappush(heap, card)
for i in range(m):
a = heapq.heappop(heap)
b = heapq.heappop(heap)
heapq.heappush(heap, a+b)
heapq.heappush(heap, a+b)
print(sum(heap))
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 2156번 : 포도주 시식 (0) | 2022.07.05 |
---|---|
파이썬) 백준 알고리즘 | 13975번 : 파일 합치기 3 (0) | 2022.07.01 |
파이썬) 백준 알고리즘 | 20004번 : 베스킨라빈스 31 (0) | 2022.07.01 |
파이썬) 백준 알고리즘 | 9661번 : 돌 게임 7 (0) | 2022.06.30 |
파이썬) 백준 알고리즘 | 9660번 : 돌 게임 6 (0) | 2022.06.30 |
댓글