Skip to content

Commit 1c8753b

Browse files
committed
0322-coin-change
1 parent 87c00ae commit 1c8753b

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* [풀이 κ°œμš”]
3+
* - μ‹œκ°„λ³΅μž‘λ„ : O(N * amount) (N: 동전 μ’…λ₯˜μ˜ 개수, μ΅œλŒ€ 12 * 10,000 = 120,000번 μ—°μ‚°)
4+
* - κ³΅κ°„λ³΅μž‘λ„ : O(amount) (DP ν…Œμ΄λΈ” 크기)
5+
*/
6+
class Solution {
7+
/**
8+
* [문제 풀이 아이디어]
9+
* - amountλ₯Ό κΈˆμ•‘μ΄λΌκ³  ν•΄μ„ν–ˆμ„ λ•Œ, κΈˆμ•‘μ„ λ§Œλ“€ 수 μžˆλŠ” μ΅œμ†Œ μ½”μΈμ˜ 갯수λ₯Ό κ΅¬ν•˜λŠ” 문제.
10+
* - κ°€μ§“ 수λ₯Ό μ˜λ―Έν•˜λŠ” 배열을 동해 동적 ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μœΌλ‘œ ν’€ 수 있음.
11+
* - λ°”κΉ₯ λ£¨ν”„μ—μ„œλŠ” 코인을, μ•ˆμͺ½ λ£¨ν”„μ—μ„œλŠ” 수λ₯Ό μ°¨λ‘€λ‘œ μˆœνšŒν•¨.
12+
* - μ΄λ•Œ λͺ¨λ“  μˆ˜μ— λŒ€ν•΄ 각 μ½”μΈμœΌλ‘œ λ§Œλ“€ 수 μžˆλŠ” μ΅œμ € 수λ₯Ό κ³„μ‚°ν•΄μ„œ λ„£κ³ , μ½”μΈμ˜ μ•‘λ©΄ κ°’ 만큼 적은 νšŸμˆ˜μ—μ„œ ν•΄λ‹Ή 코인을 λ”ν•΄μ„œ λ§Œλ“€ 수 μžˆλŠ” μˆ˜μ™€ λΉ„κ΅ν•œ μ΅œμ†Ÿκ°’μ„ ꡬ함.
13+
* - μ‹œκ°„ λ³΅μž‘λ„λŠ” μ½”μΈμ˜ 수 * κΈˆμ•‘μ˜ 수 μ΄λ―€λ‘œ, 문제의 μ œμ•½μ— 따라 12 * 10,000 = 120000 이 λœλ‹€.
14+
*/
15+
public int coinChange(int[] coins, int amount) {
16+
int[] methods = new int[amount + 1]; // κΈˆμ•‘λ³„ μ½”μΈμ˜ μ΅œμ†Œ 갯수
17+
Arrays.fill(methods, amount+1);
18+
19+
methods[0] = 0; // κΈˆμ•‘ 0원을 λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” 코인을 μ•ˆμ“°λ©΄ 됨.
20+
for(int i=0; i<coins.length; i++) {
21+
int coin = coins[i];
22+
for(int j=1; j <= amount; j++) {
23+
if(j >= coin) {
24+
methods[j] = Math.min(methods[j], methods[j - coin] + 1);
25+
}
26+
}
27+
}
28+
29+
return methods[amount] == amount + 1 ? -1 : methods[amount];
30+
}
31+
}

0 commit comments

Comments
Β (0)