1자리일때는 1개씩
dp[n][l] n은 자리수 l은 마지막수
dp[1][l] l -> 0~9 까지 1로 초기화
dp[n][l] = dp[n-1][0]+dp[n-1][1]+dp[n-1][2]+....+d[n-1][l]
이걸 코드로 하면..
package basic;
import java.io.BufferedReader; import java.io.InputStreamReader;
public class AscendingStair {
public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = new Integer(br.readLine()); long dp[][] = new long [n+1][10]; for(int i=0;i<10;i++){ dp[1][i] = 1; } for(int i=2;i<=n;i++){ for(int j=0;j<10;j++){ for(int k=0;k<=j;k++){ dp[i][j]+=dp[i-1][k]; //dp[i][j] = dp[i-1][0] + dp[i-1][1] +... + dp[i-1][j] } dp[i][j] %=10007; } }
int ans =0; for(int i=0;i<10;i++) ans+=dp[n][i];
System.out.println(ans%10007); }
}
|
'알고리즘구현능력 > 문제해결능력' 카테고리의 다른 글
[java] 백준/2167 2차원 배열의 합.. (0) | 2019.04.10 |
---|---|
[java] 백준/14501 퇴사 (0) | 2019.04.10 |
[java] 백준/9461 파도반수열 (0) | 2019.04.09 |
[java] 백준/9465 스티커 (0) | 2019.04.08 |
[java] 백준/2163 초콜릿자르기 (0) | 2019.04.08 |