https://www.acmicpc.net/problem/15903
15903번: 카드 합체 놀이
첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,
www.acmicpc.net
문제
풀이
주어진 카드들 중에서 가장 작은 숫자의 카드를 2장 뽑아서 합한 수를 두 카드의 숫자에 새롭게 넣어주면 된다.
min()으로 구현해줘도 되지만, heapq르 활용하여 우선순위 큐 방법으로 풀어주었습니다.
코드
# 15903번 카드 합체 놀이
from heapq import heappush, heappop, heapify
n , m = map(int, input().split())
cards = list(map(int, input().split()))
heapify(cards)
for _ in range(m):
card1 = heappop(cards)
card2 = heappop(cards)
heappush(cards, card1+card2)
heappush(cards, card1+card2)
print(sum(cards))
출력결과
'백준 > 우선순위 큐' 카테고리의 다른 글
[백준][Python] 14235번 크리스마스 선물 - 실버 3 (0) | 2024.04.16 |
---|---|
[백준][Python] 1417번 국회의원 선거 - 실버 5 (0) | 2024.04.15 |