- 문제
- 접근 방법
가장 작은 크기의 두 카드 묶음을 합쳐야한다.
--> 매 상황에서 가장 작은 크기의 두 카드 묶음 !!
--> 우선 순위 큐 사용
- 코드
python
import sys, heapq
input = sys.stdin.readline
N = int(input())
heap = []
for i in range(N):
heapq.heappush(heap, int(input()))
ans = 0
while len(heap) != 1:
one = heapq.heappop(heap)
two = heapq.heappop(heap)
sum_val = one + two
ans += sum_val
heapq.heappush(heap, sum_val)
print(ans)
- 마치며
처음에 문제 풀었는데 4100ms나와서 뭐지 ..... 왜 ... 8ㅅ8 .. 이랬는데
알고보니 입력에서 속도가 느렸던 것 ..
흥
'Algorithm > Python' 카테고리의 다른 글
[백준 17090] 미로 탈출하기 (0) | 2021.04.14 |
---|---|
[백준 2110] 공유기 설치 (0) | 2021.03.31 |
[백준 16235] 나무 재테크 (0) | 2021.03.16 |
[백준 2847] 게임을 만든 동준이 (2) | 2021.03.05 |
[조합] (0) | 2021.03.04 |