코딩테스트 카드 정렬하기 문제풀이

이코테 카드 정렬하기(level 2) 문제풀이

import heapq
N = int(input())
data = []
for i in range(N):
    n = int(input())
    heapq.heappush(data, n) 
result = 0 
while len(data) > 1:
    f = heapq.heappop(data)
    s = heapq.heappop(data)
    heapq.heappush(data, f+s)
    result += f+s
print(result)

제일 작은 값을 합쳤을때 최적의 해가 되므로
우선순위 큐를 이용하여 제일 작은 값 두개를 합치고 result에 더한 후
힙에 넣는다.

좋은 웹페이지 즐겨찾기