1. data중에서 가장 작은 값 2개를 뽑아서 연산을 해주고
2. 그 결과를 다시 data에 넣어준다.
1,2번 방법을 반복하는데 data의 갯수가 1개일 때 결과를 반환하면 된다.
iterable한 data에서 계속해서 가장 작은 값을 뽑아야함으로 우선 순위 큐(Priority queue) 자료구조를 이용해서 풀어야한다.
우선 순위 자료 구조를 구현하기 위해선 파이썬의 heapq 모듈을 이용할 수 있다.
import heapq
n=int(input())
data=[int(input()) for _ in range(n)]
heapq.heapify(data)
result =0
while len(data) >1 :
min = heapq.heappop(data)
min_2 = heapq.heappop(data)
sum = min +min_2
result += min + min_2
heapq.heappush(data,sum)
print(result)
'코딩테스트 공부 > 백준_그리디 알고리즘' 카테고리의 다른 글
[백준 11866 파이썬] (0) | 2022.01.16 |
---|---|
[백준 1051 파이썬] (0) | 2022.01.15 |
[백준 11279 파이썬] (0) | 2022.01.13 |
[백준 1927 파이썬] (0) | 2022.01.13 |
[백준 11000 파이썬] (0) | 2022.01.13 |