포도가게의 개발일지

python 15903 카드 합체 놀이 본문

백준

python 15903 카드 합체 놀이

grape.store 2021. 9. 13. 20:19
반응형

https://www.acmicpc.net/problem/15903

 

15903번: 카드 합체 놀이

첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,

www.acmicpc.net

문제 : 가장 작은 카드 조합 만들기

접근법 

 - 가장 작게 만드는 문제

 - 전체 카드에서 가장 작은 카드 2개를 뽑아서 더한값이 nC2 조합중 가장 작은 수의 합이다

 - 그리디 알고리즘으로 접근 및 우선순위 큐를 이용하여 접근

 

import sys
import heapq

#sys.stdin = open("inputs.text")


n,m = map(int,sys.stdin.readline().split())


arr = list(map(int,sys.stdin.readline().split()))

heapq.heapify(arr)

for _ in range(m):
  a = heapq.heappop(arr)
  b = heapq.heappop(arr)
  c = a + b
  heapq.heappush(arr,c)
  heapq.heappush(arr,c)

answer = sum(arr)
print(answer)

 

 

'백준' 카테고리의 다른 글

python 백준 2193 이친수  (0) 2021.09.15
python 백준 13305 주유소  (0) 2021.09.14
python 백준 5557 1학년(dp)  (0) 2021.09.01
python 백준 1946 신입사원  (0) 2021.08.30
python 백준 1931 회의실 배정  (0) 2021.08.30
Comments