-
boj)11057 - 오르막수PS/boj 2020. 9. 19. 03:16
import java.io.*; public class boj_11057 { static int[][] dp; static final int mod = 10007; static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static void main(String[] args) throws IOException { int n = Integer.parseInt(br.readLine()); dp = new int[n+1][10]; for (int i = 0; i <= 9; i++) { dp[1][i] = 1; } for (int i = 2; i <= n; i++) { for (int j = 0; j <= 9; j++) { for (int k = 0; k <= j; k++) { dp[i][j] += dp[i-1][k]; dp[i][j] %= mod; } } } long ans = 0; for (int i = 0; i <= 9; i++) { ans += dp[n][i]; } System.out.println(ans % mod); } }
- 마지막 부분에 올 수 있는 수는 ? -> 0~9 까지이고 변수 L로 생각
- 그렇다면 앞에 올 수 있는 경우의 수는 ? -> L보다 같거나 작은 값들
- dp[n][L] :: 길이가 n인 수에서 L로 끝나는 경우의 수
- dp[n][L] = sigma( dp[n-1][K] ) :: 0 <= K <= L
- 이 점화식으로 dp를 채우고 정답은 sigma( dp[n][0] ~ dp[n][9] ) 이다 .
'PS > boj' 카테고리의 다른 글
boj)2156 - 포도주 시식 (0) 2020.09.19 boj)9465 - 스티커 (0) 2020.09.19 boj)1309 - 동물원 (0) 2020.09.19 boj)1149 - RGB 거리 (0) 2020.09.19 boj)2225 - 합분해 (0) 2020.09.18