[BOJ] 동전 1

Minsu Han·2022년 12월 9일
0

알고리즘연습

목록 보기
62/105

코드

from sys import stdin
input = stdin.readline

# input
n, k = map(int, input().split())
coins = []
for _ in range(n):
    coins.append(int(input()))

dp = [0]*(k+1)
dp[0] = 1
for c in coins:
    for i in range(c, k+1):
        dp[i] += dp[i-c]

print(dp[k])

결과

image


풀이 방법

  • 다이나믹 프로그래밍 문제라고 생각했으나 점화식을 세우기가 어려웠다.
  • 동전 종류를 순회하면서, 해당 동전 금액(c)을 더하여 총합 i의 금액을 채울 수 있다면 dp[i]에 dp[i-c]를 합산하는 것이 핵심이다.

profile
기록하기

0개의 댓글