dp[i] = Math.min(dp[i],dp[i-coin[j]]+1)
🎯 input = coins : [1,2,5] amount = 11
🎯 output = 3
11 = 5 + 5 + 1
dp[i] = Math.min(dp[i],dp[i-coin[j]]+1)
여기서 dp[i] 에 coins를 돌면서 여러 dp값이 저장되는데, 그 중의 최소값을 추출.
전의 값보다 값이 크면 +1
증가한 구간의 총 길이?
ex)
Q) 1 2 3 2 5 2 6 10 4 12
dp) 1 2 3 - 4 - 5 6 - 7
답 7
증가한 값을 ( 값만 ) 저장해야 한다.
어떻게?
Arrays.fill(dp,1)
for(int i=1;i<length;i++){
for(int j=0;j<i;j++){
if(number[i-1]<number[i])
dp[i] = Math.max(dp[i],dp[j]+1)
}
}
인프런 - CoinChange 문제