반응형
문제 주소
10844번: 쉬운 계단 수
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
www.acmicpc.net
알고리즘
DP
힌트
dp
배열에 i
자리수중 j
로 끝나는 수의 개수를 저장한다.
문제풀이
dp
배열에 i
자리 수중 j
로 끝나는 수의 개수를 dp[i][j]
에 저장한다. 0
으로 끝나는 경우와 9
로 끝나는 경우 그 이전의 수가 될 수 있는 수는 1
과 8
밖에 없기 때문에 따로 처리해준다.
#include<iostream>
using namespace std;
int dp[101][10];
int main(){
int n;
cin>>n;
//초기항 설정
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]%1000000000;
dp[i][9]=dp[i-1][8]%1000000000;
for(int j=1;j<=8;j++){
dp[i][j]=(dp[i-1][j-1]%1000000000+dp[i-1][j+1]%1000000000)%1000000000;
}
}
int ans=0;
for(int i=0;i<=9;i++){
ans+=dp[n][i];
ans%=1000000000;
}
cout<<ans%1000000000;
}
반응형
'Problem Solve > Dynamic Programming' 카테고리의 다른 글
[백준] 11053번 가장 긴 증가하는 부분 수열 (C) (0) | 2020.04.06 |
---|---|
[백준] 2156번 포도주 시식 (C) (0) | 2020.03.30 |
[백준] 1932번 정수 삼각형 (C) (0) | 2020.03.29 |
[백준] 1149번 RGB거리 (0) | 2020.03.28 |
[백준] 9461번 파도반 수열 (C) (0) | 2020.03.28 |