-
[BOJ 15903, Python 3] 카드 합체 놀이알고리즘/BOJ 2021. 8. 6. 14:13
https://www.acmicpc.net/problem/15903
15903번: 카드 합체 놀이
첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,
www.acmicpc.net
풀이
두 카드를 선택하고 점수를 합친 값을 선택한 두 카드의 값으로 재설정한다고 합니다.
이렇게 M번 반복하고, 카드들의 합이 최소화가 되는 것을 원한다고 합니다.
최소화를 하려면 가장 작은 2개를 선택하면 된다는 것을 알 수 있습니다.
코드는 heapq를 사용하였는데, for문 돌릴때마다 sort를 사용해도 상관 없습니다.
코드
12345678910111213from heapq import *n, m = map(int, input().split())arr = [*map(int, input().split())]q = []for i in range(n):heappush(q, arr[i])for i in range(m):x = heappop(q)y = heappop(q)heappush(q, x+y)heappush(q, x+y)print(sum(q))cs '알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 1946, Python 3] 신입 사원 (0) 2021.08.06 [BOJ 1041, Python 3] 주사위 (0) 2021.08.06 [BOJ 11047, Python 3] 동전 0 (0) 2021.08.05 [BOJ 2138] 전구와 스위치 (0) 2021.08.05 [BOJ 1931, Python 3] 회의실 배정 (0) 2021.08.05