[Algorithm] 카드 정렬하기 - 1715.py

Jifrozen·2021년 7월 25일
1

Algorithm

목록 보기
30/70

카드 정렬하기

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 이렇게 진행되어야하기 때문에 내 아이디어가 틀린거였다.
그래서 일단 치워뒀는데 알고리즘 스터디 팀원분이 힙을 자세하게 정리해주셔서 힙을 사용해 풀게되었다.!

1개의 댓글

comment-user-thumbnail
2021년 7월 26일

안녕하세요, 김덕우입니다! 저는 아직도 힙을 사용하는게 어색하고 어렵더라고요.. 알고리줌님 포스팅 보면서 저도 공부해야겠습니다! 이번주도 화이팅입니다~!2!

답글 달기