File tree Expand file tree Collapse file tree 1 file changed +22
-0
lines changed Expand file tree Collapse file tree 1 file changed +22
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } coins
3
+ * @param {number } amount
4
+ * @return {number }
5
+ */
6
+ var coinChange = function ( coins , amount ) {
7
+ // f(n) = nμ λ§λλλ° νμν λμ μ μ΅μ κ°μ
8
+ // f(n) = min(f(n), f(n-coin) + 1)
9
+
10
+ // dp λ°°μ΄ μ΄κΈ°ν: λͺ¨λ κΈμ‘μ λ§λλλ° νμν λμ κ°μλ₯Ό λΆκ°λ₯ν κ°(amount+1)μΌλ‘ μ€μ
11
+ const dp = new Array ( amount + 1 ) . fill ( amount + 1 ) ;
12
+ dp [ 0 ] = 0 ; // 0μμ 0κ°μ λμ μΌλ‘ λ§λ€ μ μμ
13
+ coins . forEach ( ( coin ) => {
14
+ for ( let i = coin ; i < dp . length ; i ++ ) {
15
+ // dp[i]: κΈ°μ‘΄μ κ³μ°λ iμμ λ§λλ μ΅μ λμ κ°μ
16
+ // dp[i-coin] + 1: (i-coin)μμ νμ¬ λμ νλλ₯Ό μΆκ°νμ¬ iμμ λ§λλ κ²½μ°
17
+ dp [ i ] = Math . min ( dp [ i ] , dp [ i - coin ] + 1 ) ;
18
+ }
19
+ } ) ;
20
+ // λͺ©ν κΈμ‘μ λ§λ€ μ μμΌλ©΄ -1 λ°ν, κ°λ₯νλ©΄ μ΅μ λμ κ°μ λ°ν
21
+ return dp [ amount ] < amount + 1 ? dp [ amount ] : - 1 ;
22
+ } ;
You canβt perform that action at this time.
0 commit comments