반응형
문제
https://www.acmicpc.net/problem/10844
이번계단을 기준으로 이전계단의 될수있는 값들을 합친다.
예를 들면 이번계단이 5라면 이전계단은 4,6이고 4,6까지의 오는 계단의 합이 이번계단이
5일때 계단의 합이 된다는것을 알수있다.
하지만 0과 9에서는 1,8로 이전계단이 한개밖에 없다 이부분은 따로 처리해주어야한다.
코드를 보면 쉽게 이해 할수 있을것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | n=int(input()) result=[[1 for _ in range(10)] for _ in range(n)]#n번째계단이 0~9일때 result[0][0]=0#0부터 시작할수 없다. for i in range(1,n): for j in range(10):#처음을 제외하면 0~9까지 가능하다 if j==0:#이번계단이 0일때 이전계단이 될수잇는건 1밖에없다. result[i][j]=result[i-1][j+1]%1000000000 elif j==9:##이번계단이 9일때 8밖에없다. result[i][j]=result[i-1][j-1]%1000000000 else:#나머지경우에는 두가지 j-1 j+1 경우에서 올수있다. result[i][j]=result[i-1][j-1]+result[i-1][j+1]%1000000000 print(sum(result[n-1])%1000000000) | cs |
반응형
'알고리즘(python) > 기본' 카테고리의 다른 글
[Python]동적계획법 백준 11053 (0) | 2020.01.11 |
---|---|
[Python]동적계획법 백준 2156 (0) | 2020.01.10 |
[Python]동적계획법 백준 1463 (0) | 2020.01.09 |
[Python]동적계획법 백준 2579 (0) | 2020.01.09 |
[Python]동적계획법 백준 1932 (0) | 2020.01.08 |
최근댓글