본문 바로가기

코딩테스트 공부/백준_그리디 알고리즘

[백준 1715 파이썬]

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