코딩테스트

[백준-10844번] 쉬운 계단 수 - Java

UnaUna 2025. 6. 5. 09:46
반응형

🚀 문제

https://www.acmicpc.net/problem/10844
 

🚀 접근 방법

DP 문제이다.
 
끝 자리 개수를 저장하는 것이 포인트
 
0은 1, 9는 8만 올 수 있다.
그 사이 값들은 -1, +1이 올 수 있다.
 
끝자리가 2라면 이전 2가 온 개수 만큼 끝자리가 1과 3 자릿수에 더해주면 된다.
 

🚀 코드

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        final long mod = 1000000000;

        int n = Integer.parseInt(br.readLine());

        long[][] dp = new long[n+1][10];

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

        for(int i=2; i<=n; i++){
            for(int j=0; j<=9; j++){
                if(j<9)
                    dp[i][j+1] +=(dp[i-1][j]%mod);
                if(j>0)
                    dp[i][j-1] +=(dp[i-1][j]%mod);
            }
        }

        bw.write(Long.toString((Arrays.stream(dp[n]).sum()%mod)));

        bw.flush();
        br.close();
        bw.close();
    }
}
반응형