https://www.acmicpc.net/problem/10844
잘못된 방법
올바른 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package n10844; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long[][] dp = new long[n+1][10]; for(int i = 1; i<=9; i++){ // n이 1일때 마지막 숫자(i)가 나올 경우의 수 n이 1이기 때문에 당연히 전부 1이다. dp[1][i] = 1; } for(int i = 2; i < n+1; i++){ for(int j = 0; j <= 9; j++){ // j는 마지막 숫자를 나타냄 if(j >= 1){ // 1보다 크면 dp[i][j] += dp[i-1][j-1]; //마지막숫자(j) 보다 1작은 숫자의 경우의 수를 더해주고 } if(j <= 8){ // 8보다 작으면 dp[i][j] += dp[i-1][j+1]; //마지막숫자(j) 보다 1큰 숫자의 경우의 수를 더해주고 } dp[i][j] = dp[i][j] % 1000000000; // 마지막 dp[]의 결과에는 10억을 나눠주고 나머지값을 저장한다. } } long result = 0; for (int i=0; i<=9; i++) { result += dp[n][i]; } result %= 1000000000; System.out.println(result); } } | cs |
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[code.plus 알고리즘 기초] no. 11057 (0) | 2019.01.25 |
---|---|
[code.plus 알고리즘 기초] no. 2193 (0) | 2019.01.22 |
[code.plus 알고리즘 기초] no. 11052 (0) | 2019.01.21 |
[code.plus 알고리즘 기초] no. 9095 (0) | 2019.01.19 |
[code.plus 알고리즘 기초] no. 11727 (0) | 2019.01.17 |