πŸ‹ 문제링크


2294번: 동전 2

🍎 μ½”λ“œ 제좜 기둝 (λ©”λͺ¨λ¦¬ 및 μ‹œκ°„)


λ©”λͺ¨λ¦¬ : 29028KB

μ‹œκ°„ : 320ms

πŸ‰ Code


import sys
input = sys.stdin.readline

def nj(k, coin, dp):
    temp=[]
    for i in coin:
        if k >= i and dp[k-i] != -1:
            temp.append(dp[k-i]+1)

    if len(temp)>0:
        return min(temp)
    else:
        return -1

n, k = map(int, input().split())
coin=[]

for i in range(n):
    coin.append(int(input()))
coin.sort()

dp = [-1 for i in range(k + 1)]

for i in range(1, k+1):
    if i in coin:
        dp[i] = 1
    else:
        dp[i] = nj(i, coin, dp)
    
print(int(dp[k]))

πŸ₯ λ©”λͺ¨


<ν‘ΈλŠ” μˆœμ„œ>

  1. coin λ°°μ—΄μ˜ μ›μ†Œ == dp 의 인덱슀 인 뢀뢄은 항상 1κ°œμ΄λ―€λ‘œ dp[x] = 1

  2. coin λ°°μ—΄μ˜ μ›μ†Œ != dp 의 인덱슀 인 뢀뢄은 dp[x-coin의 μ›μ†Œλ“€]+1 의 μ΅œμ†Ÿκ°’μ„ λ„£λŠ”λ‹€

<python : μ •μˆ˜ λ‘κ°œ μž…λ ₯λ°›κΈ°>

import sys
input = sys.stdin.readline

n, k = map(int, input().split())

<python : 크기 n λ°°μ—΄ μž…λ ₯λ°›κΈ°>

import sys
input = sys.stdin.readline

arr=[]
for i in range(n):
    arr.append(int(input()))