문제출처: https://www.acmicpc.net/problem/15903
15903번: 카드 합체 놀이
첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,
www.acmicpc.net
1. 문제 접근 방식
힙에 삽입하고 m번 동안 heappop 2회 한 후에 둘을 더한 값을 heappush 2회 해준다.
2. 내가 푼 코드
import sys
import heapq
n, m = map(int,sys.stdin.readline().split())
heap = []
arr = list(map(int,sys.stdin.readline().split()))
for i in arr:
heapq.heappush(heap, i)
for i in range(m):
a = heapq.heappop(heap)
b = heapq.heappop(heap)
heapq.heappush(heap,a+b)
heapq.heappush(heap,a+b)
print(sum(heap))
3. 결과 및 느낀점
힙 라이브러리 진짜 편리하다...
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 19598 Python (0) | 2021.09.15 |
---|---|
[Boj/백준] 19638 Python (0) | 2021.09.14 |
[Boj/백준] 1927 11279 11286 Python (0) | 2021.09.13 |
[Boj/백준] 5464 Python (0) | 2021.09.11 |
[Boj/백준] 18115 Python (0) | 2021.09.10 |