https://github.com/o920/baekjoon/blob/master/10844.cpp
#include <iostream>
using namespace std;
int dp[10][101] = { 0, }; //DP[자리수0~9][N]
int main() {
int N;
cin >> N; //입력
//초기화 : 0 1 1 1 1 1 1 1 1 1
dp[0][1] = 0;
for (int i = 1; i <= 9; i++) dp[i][1] = 1;
//DP
for (int j = 2; j <= N; j++) {//두번째자리부터 N번째 자리까지 DP
for (int i = 0; i <= 9; i++) { // 0부터 9까지 가능한 개수 확인
if (i == 0) dp[i][j] = dp[i + 1][j - 1]; //0은 그 직전 수가 1일 때밖에 없음
else if (i == 9) dp[i][j] = dp[i - 1][j - 1]; // 9는 직전 수가 8일 때밖에 없음
else dp[i][j] = (dp[i - 1][j - 1] + dp[i + 1][j - 1])%1000000000;
// 0과 9를 제외한 나머지 수 I가 나오려면 그 직전 수가 I-1 또는 I+1이어야 함
}
}
int sum = 0;
for (int i = 0; i <= 9; i++) {
sum = (sum + dp[i][N]) % 1000000000;
}
cout << sum << endl;
}
o920/baekjoon
Contribute to o920/baekjoon development by creating an account on GitHub.
github.com
'코테' 카테고리의 다른 글
백준 11054 : 가장 긴 바이토닉 부분 수열 C++ 정답&해설 (0) | 2020.03.17 |
---|---|
백준 11650 좌표 정렬하기 c++ 정답 (pair 사용) (0) | 2020.03.12 |
백준 2231 : 분해합 C++ 정답 (0) | 2020.03.10 |
백준BOJ 1920 수 찾기(해시 이용, 코드 설명) (0) | 2020.03.04 |
백준BOJ 2156 포도주 시식 (0) | 2020.03.02 |