코딩 테스트/정렬

카드 정렬하기

hazel_ 2021. 2. 15. 20:11

p.363

 

import sys
import heapq
input=sys.stdin.readline

N=int(input())
heap=[]
for i in range(N):
  data=int(input())
  heapq.heappush(heap,data)

result = 0

# 힙에 원소가 1개 남을 때까지
while len(heap)!=1:
  one=heapq.heappop(heap)
  two=heapq.heappop(heap)
  sum_value=one+two
  result+=sum_value
  heapq.heappush(heap, sum_value)
print(result)

 

* heapq는 넣기만 해도 정렬된다는 것을 이용

* deque나 stack으로 한 후 sort하는 것은 시간 초과가 남