-문제: https://www.acmicpc.net/problem/15903

 

우선순위 큐를 이용한 문제. 

문제 조건을 잘못 이해해서 예제2번에서 애를 좀 먹었다 

  1. 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))

 

+ Recent posts