https://www.acmicpc.net/problem/15903
기본적인 heap사용법만 알면 크게 어려운 문제는 아니였다.
list를 입력 받으면 가장 작은 수를 빼고 2개를 더한 뒤 더한 수를 다시 list에 넣어주면 된다.
그래서 난 가장 작은 수 2개를 빼기 위헤 heap을 사용했다.
import heapq
n,t= map(int,input().split())
heap = list(map(int,input().split()))
heapq.heapify(heap)#list->heap
for _ in range(t):
a = heapq.heappop(heap)#제일 작은 수 뺌
b = heapq.heappop(heap)# 그 다음 제일 작은 수 뺌
heapq.heappush(heap,a+b)#다시 heap에 넣어줌
heapq.heappush(heap,a+b)#다시 heap에 넣어줌
print(sum(heap))#모든 수를 더한 값을 출력해줌
'백준 파이썬 코딩' 카테고리의 다른 글
백준 17135 캐슬 디펜스 파이썬 (0) | 2022.08.21 |
---|---|
백준 13144 List of Unique Numbers 파이썬 주석 설명 O (0) | 2022.08.20 |
백준 11052 카드 구매하기 파이썬 (0) | 2022.08.19 |
백준 10814 나이순 정렬 파이썬 (0) | 2022.08.18 |
백준 18310 안테나 파이썬 (0) | 2022.08.18 |