[백준 1715] 카드 정렬하기

Junyoung Park·2022년 3월 6일
0

코딩테스트

목록 보기
196/631
post-thumbnail

1. 문제 설명

카드 정렬하기

2. 문제 분석

우선순위 큐를 통해 최솟값 두 개를 pop한다.

3. 나의 풀이

import sys
import heapq

n = int(sys.stdin.readline().rstrip())
total = 0
heap = []
for _ in range(n):
    num = int(sys.stdin.readline().rstrip())
    heapq.heappush(heap, num)
# 우선순위 정렬

while len(heap) > 1:
    num1 = heapq.heappop(heap)
    num2 = heapq.heappop(heap)
    total += num1 + num2
    # 힙 안에 두 개 이상 수가 남아 있다면 최솟값 두 개를 합하는 게 가장 작은 수를 구하는 방법
    heapq.heappush(heap, num1+num2)

print(total)
profile
JUST DO IT

0개의 댓글