白駿1715:カードを並べる
2899 ワード
#백준 1715 카드정렬하기
import heapq # 우선순위 큐
N = int(input())
#정렬된 두 묶음의 숫자 카드를 한 묶음으로 만드는 경우 A+B번의 연산이 필요하며,
#카드뭉치에서 가장 작은 2묶음을 골라서 합은 result에 누적시키고, 그 더한 값은 카드뭉치로
cardList = list(int(input()) for _ in range(N))
# 우선순위 큐 사용
heapq.heapify(cardList)
result=0
while len(cardList) != 1:
# 가장 작은 2개의 값 선택
num1 = heapq.heappop(cardList)
num2 = heapq.heappop(cardList)
Sum = num1 + num2
#두개를 더한 결과는 result에 누적
result += Sum
#두개를 더한 결과를 다시 힙에 push
heapq.heappush(cardList,Sum)
print(result)
Reference
この問題について(白駿1715:カードを並べる), 我々は、より多くの情報をここで見つけました https://velog.io/@eclat12450/백준-1715-카드-정렬하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol