import heapq
n = int(input())
card = []
for _ in range(n):
data = int(input())
heapq.heappush(card, data)
result = 0
while len(card) != 1:
first = heapq.heappop(card)
second = heapq.heappop(card)
sum_value = first + second
result += sum_value
heapq.heappush(card, sum_value)
print(result)
처음에
n=int(input())
data=[]
for i in range (n):
data.append(int(input()))
data.sort()
a=0
s=[]
while n>1:
s.append(sum(data[a:a+2]))
a=a+2
n=n-2
result=sum(s)+sum(data)
print(result)
이런식으로 작성해 정렬하고 작은값부터 더해서 같이 더해주는식으로 코드를 짰다. 단순히 테스트값 10 20 30만 보면 맞지만 생각해보니 10 10 10 10 일경우 내 코드로 풀게되면 10 + 10 = 20
20+ 10=30
30+10=40 이런식으로 진행된다.
하지만 10 10 10 10 의 가장 작은값은 10+ 10=20
10+10=20 이렇게 진행되어야하기 때문에 내 아이디어가 틀린거였다.
그래서 일단 치워뒀는데 알고리즘 스터디 팀원분이 힙을 자세하게 정리해주셔서 힙을 사용해 풀게되었다.!
안녕하세요, 김덕우입니다! 저는 아직도 힙을 사용하는게 어색하고 어렵더라고요.. 알고리줌님 포스팅 보면서 저도 공부해야겠습니다! 이번주도 화이팅입니다~!2!