Algorithm/baekjoon

쉬운 계단 수

마닐라 2022. 2. 9. 22:43

📍 문제 설명

 

 

💡 접근

0, 9를 제외한 숫자를 제외하고는 2개를 더해줄 수 있다.

 

 

👩‍💻 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    static long mod = 1000000000;
    static int n, m, answer;
    static int[][] board;
    static long[][] arr, dp;
    static boolean[][] visited;
    static int[] dx = {-1,1,0,0};
    static int[] dy = {0,0,-1,1};
    static ArrayList<String> list = new ArrayList<>();
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws IOException {
        Scanner kb = new Scanner(System.in);
        Main T = new Main();
        //BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        n = kb.nextInt();
        dp = new long[n+1][10];

        //첫번째 자릿수는 1로 초기화한다.
        for(int i = 1; i < 10; i++) {
            dp[1][i] = 1;
        }

        T.solution();

        long result = 0;

        for(int i = 0; i < 10; i++) {
            result += dp[n][i];
        }
        System.out.println(result);

    }

    private void solution() {
        //두번째 자릿수부터 확인
        for(int i = 2; i <= n; i++) {
            //i번째 자릿수의 숫자들 탐색
            for(int j = 0; j < 10; j++) {
                //10이면 101 20이면 201
                if(j == 0) {
                    dp[i][0] = dp[i-1][1] % mod;
                }
                //19면 198 29면 298
                else if(j == 9) {
                    dp[i][9] = dp[i-1][8] % mod;
                }
                //15면 154 156 둘다 가능
                else {
                    dp[i][j] = (dp[i-1][j-1] + dp[i-1][j+1]) % mod;
                }
            }
        }
    }

}

'Algorithm > baekjoon' 카테고리의 다른 글

가장 긴 증가하는 부분 수열  (0) 2022.02.15
이친수  (0) 2022.02.15
카드 구매하기  (0) 2022.02.09
1,2,3 더하기 5  (0) 2022.02.09
2×n 타일링  (0) 2022.02.08