반응형
13975번: 파일 합치기 3
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개의 행으로 주어지는데,
www.acmicpc.net
코드
import heapq
import sys
t = int(input())
for _ in range(t):
k = int(input())
n_list = list(map(int,sys.stdin.readline().split()))
heapq.heapify(n_list)
if k == 1:
print(n_list[0])
break
answer = 0
while len(n_list)>1:
a = heapq.heappop(n_list)
b = heapq.heappop(n_list)
sum = a+b
answer+=sum
heapq.heappush(n_list,sum)
print(answer)
설명
우선 주어진 수 중에서 가장 작은 수를 먼저 더해야 최소 비용을 구할 수 있다. 그래서 힙을 이용해서 작은 수가 먼저 pop 될 수 있게 했다.
먼저 입력 값을 리스트로 받은 후 heapify를 이용해서 힙 자료형으로 변환할 수 있었다.
가장 작은 값 두 개씩 힙에서 꺼내서 더해준 뒤 그 값을 answer에 더해주고 다시 힙에 넣는다. 이걸 반복하게 되면 마지막에는 힙에 숫자 하나만 남게 되기 때문에 while문의 조건을 n_list의 길이가 1일 때 빠져나가는 것으로 했다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 1439번 뒤집기 (0) | 2022.05.25 |
---|---|
[백준][Python] 1715번 카드 정렬하기 (0) | 2022.05.04 |
[백준][Python] 2812번 크게 만들기 (0) | 2022.05.02 |
[백준][Python] 2141번 우체국 (0) | 2022.04.29 |
[백준][Python] 1092번 배 (0) | 2022.04.28 |
댓글