BOJ_2293 동전 1

n, k = map(int, input().split())
coin = []
for _ in range(n):
    coin.append(int(input()))
dp = [0 for _ in range(k+1)]

dp[0] = 1
for c in coin:
    for i in range(k+1):
        if i - c >= 0:
            dp[i] += dp[i-c]

print(dp[k])

제일 가독성이 좋은 파이썬 코드로 가져와 봤습니다.

Untitled

배열을 두 개 만들어 줘야 한다.

코드로 예시를 들겠다.

coin[] → 동전의 종류를 넣는 배열

dp[] → 합의 경우의 수를 넣는 배열

dp[n] → 동전의 합이 n인 경우의 수이다.

ex) dp[7] → 동전의 합이 7인 경우의 수

표에는 규칙이 있어요

숫자 1만 사용할떄는 1+1+… +1 = n 이거 하나 밖에 없어요 그래서 모든 수를 1로만 만든다면 한 가지밖에 없어요

숫자 1과 2를 사용할 때부터 규칙이 생깁니다. dp[2] 부터 2가 들어갈 수 있죠.