-문제: 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))
'백준 > Greedy' 카테고리의 다른 글
[그리디/백준] 2212번: 센서 (0) | 2022.07.11 |
---|---|
[그리디/백준] 1213번: 팰린드롬 만들기 (0) | 2022.07.09 |
[그리디/백준] 11497번: 통나무 건너뛰기 (0) | 2022.07.09 |
[그리디/백준] 1783번: 병든 나이트 (0) | 2022.07.07 |
[그리디/백준] 2847번: 게임을 만든 동준이 (0) | 2022.07.07 |