#include <iostream> #include <algorithm> #include <string.h> using namespace std; #define MOD 1000000 string N; long long dp[5010]; long long solve(int idx) { if(idx >= N.size()) { return 0; } else if(idx == N.size()-1) { return 1; } if(dp[idx] != 0) { return dp[idx]; } if('1' <= N[idx+1]) { dp[idx] = solve(idx+1) % MOD; } if((N[idx+1] == '1') || (N[idx+1] == '2' && N[idx+2] <= '6')) { dp[idx] = (dp[idx] + solve(idx+2)) % MOD; } return dp[idx]; } int main(void) { // freopen("B2011_input.txt", "r", stdin); cin >> N; N = "0" + N; cout << solve(0); return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 2293] 동전 1 (DP) (C/C++) (★★) (0) | 2020.03.07 |
---|---|
[백준 11052] 카드 구매하기 (DP) (C/C++) (0) | 2020.01.22 |
[백준 9461] 파도반 수열(DP) (C/C++) (0) | 2020.01.22 |
[백준 2225] 합분해 (DP) (C/C++) (0) | 2020.01.22 |
[백준 2133] 타일 채우기 (DP) (C/C++) (★★★) (0) | 2020.01.21 |