https://www.acmicpc.net/problem/1715
import heapq
N = int(input())
N_list = []
for i in range(N):
N_list.append(int(input()))
heapq.heapify(N_list)
ans = 0
while True:
if N==1:
break
elem1 = heapq.heappop(N_list)
elem2 = heapq.heappop(N_list)
print(elem1,elem2)
sum_elem = elem1+elem2
ans += sum_elem
if not N_list:
break
heapq.heappush(N_list,sum_elem)
if N==1:
print(N_list[0])
else:
print(ans)
문제를 해결하기 위한 로직은 정렬 후 가장 작은 두개의 수를 뽑아 더하는 것을 반복하는 것이다.
그런데 정렬을 계속하면 시간초과가 발생하여 우선순위 큐(힙큐)를 사용하였다.