본문 바로가기
Problem Solving/BOJ

[Python]10844. 쉬운 계단 수

by 부르르 2019. 4. 4.

 

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

 

10844번: 쉬운 계단 수

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

www.acmicpc.net


 

계단이라는 특성으로 인해서 문자열 비교 없이 DP를 이용해서 풀 수 있다.

단, 2차원 DP를 이용하는 것이 편리하다.

DP[2]를 구하기 위해 DP[1]을 참조 하는 모습 도식화

점화식으로 풀어보면 다음과 같다.

DP[i][0] = DP[i-1][1]

DP[i][1] = DP[i-1][0] + DP[i-1][2]

DP[i][2] = DP[i-1][1] + DP[i-1][3]

...

DP[i][8] = DP[i-1][7] + DP[i-1][9]

DP[i][9] = DP[i-1][8]

 

DP[1]을 미리 초기화하여 별도의 예외처리를 하지 않는다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
MAX = 100
MOD = 1000000000
DP = [[0]*(10for _ in range(MAX+1)]
 
DP[1= [0,1,1,1,1,1,1,1,1,1]
 
for i in range(2, MAX+1):
    DP[i][0= DP[i - 1][1] % MOD
    DP[i][9= DP[i - 1][8] % MOD
    for j in range(1,8+1):
        DP[i][j] = (DP[i-1][j-1+ DP[i-1][j+1]) % MOD
 
= int(input())
print(sum(DP[x])% MOD)
cs
728x90
반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[Python]2156. 포도주 시식  (0) 2019.04.04
[Python]9465. 스티커  (0) 2019.04.04
[Python]15990. 1,2,3 더하기 5  (2) 2019.04.03
[Python]16194. 카드 구매하기 2  (0) 2019.04.03
[Python]1463. 1로 만들기  (0) 2019.04.02

댓글