1715번: 카드 정렬하기
정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장��
www.acmicpc.net
import heapq
import sys
# 최소값 2개 더하기 => 힙 이용
def search(a):
res = 0
heapq.heapify(a)
while len(a) >= 2:
s = heapq.heappop(a) + heapq.heappop(a)
res += s
heapq.heappush(a, s)
return res
N = int(input())
moneys = [int(sys.stdin.readline()) for _ in range(N)]
print(search(moneys))
'BOJ 알고리즘 (패캠) > 정렬, 탐색' 카테고리의 다른 글
1766번: 문제집 (힙, 위상정렬) - Fastcampus (0) | 2020.10.07 |
---|---|
1927번: 최소 힙 (힙) - Fastcampus (0) | 2020.10.07 |
2250번: 트리의 높이와 너비 (트리, 재귀) - Fastcampus (0) | 2020.10.07 |
1991번: 트리 순회 (트리, 재귀) - Fastcampus (0) | 2020.10.07 |
1939번: 중량제한 (탐색, 이분탐색, BFS) - Fastcampus (0) | 2020.10.07 |