문제 코드
from heapq import heappush, heappop
hq=[]
n=int(input())
for _ in range(n):
x=int(input())
heappush(hq, x)
#마지막에 합쳐지는수는 어차피 동일
#대신 초반부터 적게 합치고 합쳐야함.
ans=0
while(len(hq) !=1):
a = heappop(hq)
b = heappop(hq)
ans += a+b
heappush(hq, a+b)
print(ans)
코드 설명
계속 합치면서 더하기 때문에 가장 적은 수끼리 더하고를 반복해야 합니다. 이때 이미 합한 값도 포함하여 가장 작은 두 개를 합쳐야하니 합한값을 다시 힙에 넣어줬습니다. hq의 길이가 1이될때까지 반복한 후 답을 출력합니다.
'Koala - 12기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/C++] 11286번: 절댓값 힙 (0) | 2023.10.29 |
---|---|
[백준/C++] 1614번 영식이의 손가락 (0) | 2023.10.28 |
[백준/python3] 2559번:수열 (1) | 2023.10.02 |
[백준/Python] 1279번 : 풍선공장 (0) | 2023.10.01 |
[백준/Python] 11441번 : 합 구하기 (1) | 2023.10.01 |