백준/Greedy
[그리디/백준] 15903번: 카드 합체 놀이
ydin
2022. 7. 9. 10:53
-문제: https://www.acmicpc.net/problem/15903
우선순위 큐를 이용한 문제.
문제 조건을 잘못 이해해서 예제2번에서 애를 좀 먹었다
- x번 카드와 y번 카드를 골라 그 두 장에 쓰여진 수를 더한 값을 계산한다. (x ≠ y)
위 조건을 x != y를 보고 카드에 적힌 숫자가 다른 거라고 생각했는데 그게 아니라
x와 y는 카드 번호이므로, 같은 카드를 뽑아서 더하면 안 된다는 것이지, 카드의 값이 꼭 달라야할 필요는 없는 것이다
그래서 우선순위 큐에서 가장 왼쪽 두 숫자의 합을 계속 추가해 나가면 답이 나온다 .
-> 문제를 좀 더 꼼꼼히 읽자!!!
-정답풀이
import heapq
n,m=map(int,input().split())
data=list(map(int,input().split()))
data.sort()
for i in range(m):
a=heapq.heappop(data)
b=heapq.heappop(data)
c=a+b
heapq.heappush(data,c)
heapq.heappush(data,c)
print(sum(data))