반응형
#1715
import heapq
import sys
n = int(sys.stdin.readline())
heap = []
carculate = []
for _ in range(n):
card = int(sys.stdin.readline())
heapq.heappush(heap, card)
while len(heap) > 1:
temp1 = heapq.heappop(heap)
temp2 = heapq.heappop(heap)
carculate.append(temp1 + temp2)
heapq.heappush(heap,temp1 + temp2)
print(sum(carculate))
설명
숫자끼리 더하면서 생기는 연산을 모았다가 더하면 되는 문제이다. 다만 적은 수끼리 더하는 것이 연산이 적기 때문에, 우선순위 큐를 사용해야한다. 더한 값은 다시 힙큐에 넣어줘야한다. while heap:을 사용하지 않은 이유는 pop이 두 번씩 되기 때문이다.
문제점
괜히 바보같이 주어진 수의 갯수가 짝수 개일때와 홀수 개일때 나눠서 연산해야하는 줄 알고 괜히 복잡하게 코드를 짰다가 다 지워서 다시 깔끔하게 작성하였다.
반응형
'코딩 이야기 > 백준 풀이' 카테고리의 다른 글
백준 12764번: 싸지방에 간 준하 파이썬 코드(우선순위 큐) (3) | 2021.07.13 |
---|---|
백준 2109번: 순회강연 파이썬 코드(우선순위 큐) (0) | 2021.07.13 |
백준 11000번: 강의실 배정 파이썬 코드(우선순위 큐) (0) | 2021.07.13 |
백준 1374번: 강의실 파이썬 코드(우선순위 큐) (0) | 2021.07.13 |
백준 1342번: 행운의 문자열 파이썬코드(백트래킹) (0) | 2021.07.11 |