[백준]10844 쉬운 계단 수

서은경·2023년 6월 14일
0

CodingTest

목록 보기
68/71

점화식은 잘 찾았는데 조건을 잘 찾아놓고 분기처리를 제대로 안해줘서 틀렸다..ㅠㅠ

package baekjoon;

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

public class Main_10844 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.valueOf(br.readLine());
        int[][] dp = new int[N+1][11];

        /*
        
        // 0으로 끝나는 수 뒤엔 1밖에 못붙는다
        // 9로 끝나는 수는 8밖에 못붙음
        // 나머지 수는 두개씩 더 붙을 수 있음
        // ex 10 12 21 23 32 34 ... 는
        // [101] [121 123] [210 212] [232 234] [323 324] [345 343] 이렇게 늘어날 수 있음

        dp[0][0]=1;
        for (int i = 1; i < 10; i++) {
            dp[0][i] = 1;
        }

        for (int i = 1; i < N; i++) {
            dp[i][0] = i;
            for (int j = 1; j < 10; j++) {
                dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1];
            }
        }

         */
        for (int i = 1; i <= 9; i++) {
            dp[1][i] = 1;
        }

        for (int i = 2; i <= N; i++) {
            dp[i][0] = dp[i - 1][1];
            for (int j = 1; j <= 9; j++) {
                dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j + 1]) % 1000000000;
            }
        }

        long sum = 0;
        for (int i = 0; i < 10; i++) {
            sum += dp[N][i];
        }
        System.out.println(sum % 1000000000);
        //System.out.println(Arrays.toString(dp[N-1]));
        //System.out.println((Arrays.stream(dp[N-1]).sum()-dp[N-1][0])%1000000000);

    }
}

틀린코드는 주석으로 남겨놨다 ! 뭘 틀렸는지 다시 뜯어보려고 ㅎㅎㅎ 정확히 내 소스가 되면 그때 한번 더 풀어보고 지워야지.. 코틀린으로도 한번 풀어서 업로드 해야겠다..(내일)

점화식을 노가다로 찾은 흔적..

0개의 댓글

관련 채용 정보