[プログラマー]おつり(JAVA)


問題の説明
Finnはコンビニで夜間アルバイトをしています.夜、お客さんが多すぎて退屈していたFinnがお客さんに小銭を探してあげたとき、方法を探すことにしました.
例えば、お客様に5元を探して、1元、2元、5元を持っている場合は、以下の4つの方法で5元を探すことができます.
5元で金を探す.
1元は3個、2元は1個で探します.
1元で1個、2元で取り戻します.
5元で1つ探します.
取り戻した金額nとFinnが現在持っているお金の種類moneyをパラメータとする必要がある場合は、Finnがn元の取り戻し方法の数を返すように解く関数を完了してください.
せいげんじょうけん
nは100000以下の自然数である.
通貨単位は100種類以下です.
すべての通貨が無限であると仮定します.
答えは大きくなるかもしれませんが、10万07の残りを返してください.
Code
class Solution {
    public int solution(int n, int[] money) {
        int[] dp = new int[n+1];
		dp[0] = 1;
		for(int m : money) {
			for(int i=1 ; i<=n ; i++) {
				if(i-m<0) continue;
				dp[i] += dp[i-m]; 
			}
		}
		
		return dp[n];
    }
}
Comment
わあ.これ.ほぼ30分でバカなことをして、回り道をしました...解き直そう.