영호

[백준] 카드 합체 놀이 15903 (Python) 본문

Algorithm/Greedy

[백준] 카드 합체 놀이 15903 (Python)

0h0 2022. 7. 10. 14:09

문제 링크

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

 

15903번: 카드 합체 놀이

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

www.acmicpc.net

나의 풀이

  • x번 카드와 y번 카드를 골라 그 두 장에 쓰인 수를 더한 값을 계산한다. (x ≠ y)
    • 저는 처음에 x!= y의 뜻이 x, y가 같은 수면 안된다는 뜻인 줄 알았는데, 그게 아니라 같은 위치의 카드를 고를 수 없다는 뜻입니다.
  • heapq를 사용하여 풀이했습니다.

Code

import heapq

cards_num, m = map(int,input().split())

cards = list(map(int,input().split()))
heapq.heapify(cards)

for _ in range(m):
    card1 = heapq.heappop(cards)
    card2 = heapq.heappop(cards)

    sum_card = card1 + card2

    heapq.heappush(cards, sum_card)
    heapq.heappush(cards, sum_card)

print(sum(cards))

Git

https://github.com/youngh0/Algorithm/blob/master/greedy/boj_15903.py

Comments