Algorithm-카드 정렬하기
백준 1715 : 문제링크
문제유형 :
- 탐색
- 힙
- 그리디
설명
- 가장 작은 숫자의 카드 묶음을 먼저 합쳤을 때 최소값
- heap을 사용해서 작은 값 두개를 pop한다
- 추출한 두 개의 값을 합해서 결과에 더한다
- 합한 값을 다시 heap에 push한다
- heap에 값이 한 개 남았을 때 종료한다
풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import heapq
n = int(input())
heap = []
for i in range(n):
data = int(input())
heaq.heappush(heapq, data)
result = 0
while len(heap) != 1:
one = heapq.heappop(heap)
two = heapq.heappop(heap)
sum_value = one + two
result += sum_value
heapq.heappush(heap, sum_value)
print(result)