Algorithm/DP

[๋ฐฑ์ค€] 2293 : ๋™์ „ 1 (ํŒŒ์ด์ฌ)

_์€์„ _ 2024. 8. 23. 17:07
728x90
SMALL

DP ๋ฌธ์ œ

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


๐Ÿ’ก ํ’€์ด์ฝ”๋“œ (์‹คํŒจ - ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ)

import sys 
n, k = map(int, sys.stdin.readline().split())
coin = [0] 

for _ in range(n):
    num = int(sys.stdin.readline())
    coin.append(num)

    def sol(n, k, coin):
        dp = [[0] * (k + 1) for _ in range(n + 1)]

        for i in range(n + 1):
            dp[i][0] = 1

        for i in range(1, n + 1):
            for j in range(1, k + 1):
                if j - coin[i] < 0: 
                    dp[i][j] = dp[i - 1][j]
                else:
                    dp[i][j] = dp[i - 1][j] + dp[i][j - coin[i]]
        print(dp[n][k])
sol(n, k, coin)

๐Ÿ’ก ํ’€์ด์ฝ”๋“œ (์„ฑ๊ณต)

import sys 
n, k = map(int, sys.stdin.readline().split())
coin = [0] 

for _ in range(n):
    num = int(sys.stdin.readline())
    coin.append(num)

def sol(n, k, coin):
    dp = [0] * (k + 1)

    dp[0] = 1

    for i in range(1, n + 1):
        for j in range(1, k + 1):
            if j - coin[i] >= 0: 
                dp[j] += dp[j - coin[i]] 
    print(dp[k])
sol(n, k, coin)

 

2์ฐจ์› ๋ฐฐ์—ด -> 1์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋‹ˆ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

728x90
LIST