카테고리 없음

[Python/Silver1/10844] 쉬운 계단 수

콘순이 2025. 2. 5. 15:26

|    문제

45656이란 수를 보자.

이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다.

N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.

|    입력

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.

 

|    출력

첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.

 

 


정답 코드

import sys
input = sys.stdin.readline

class Solution:
    def easy_stairs(self):
        N = int(input())
        dp = [[0] * 10 for _ in range(101)]
        for i in range(N+1):
            for j in range(10):
                if i==0:  
                    dp[i][j] = 0
                elif i == 1:
                    dp[i][j] = 1
                elif j == 0:
                    dp[i][j] = dp[i-1][j+1]
                elif j == 9:
                    dp[i][j] = dp[i-1][j-1]
                else:
                    dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]
        
        print((sum(dp[N][i] for i in range(1,10))) % 1_000_000_000)
        

if __name__ == "__main__":
    s = Solution()
    s.easy_stairs()

 

 

|    비고

노가다로 표 그려서 규칙을 구했다. 구현은 쉽다!