반응형
def do(l):
l[0]=l[0]+l[1]
l[1]=l[0]
n,m=map(int, input().split())
l=list(map(int, input().split()))
for x in range(m):
l.sort()
do(l)
print(sum(l))
정렬을 이용하면 매우 쉽게 풀 수 있다.
그러나 heap을 사용해서 풀어보자.
import heapq
n,m=map(int, input().split())
l=list(map(int, input().split()))
heapq.heapify(l)
for _ in range(m):
tmp=heapq.heappop(l)+heapq.heappop(l)
heapq.heappush(l,tmp)
heapq.heappush(l,tmp)
print(sum(l))
최소 힙을 사용해서 제일 적은 값을 두번 꺼내어 둘을 더하여 힙에 다시 추가해준다.
힙을 사용한 풀이가 조금 더 빠르다. 아무래도 정렬보다는 접근하는 요소가 적기 때문으로 생각된다.
반응형