풀이
n-1번째 숫자와 n번째 숫자로 만든 값이 10~34면 dp[n-2]를 플러스
n번째 숫자가 0보다 크면(단독으로 숫자를 구성할 수 있으면) dp[n-1]을 플러스
코드
#include <stdio.h>
int i, a[44], dp[44];
int main() {
dp[1] = 1;
for (i = 2; ~scanf("%1d", &a[i]); i++) {
if (a[i]) dp[i] += dp[i - 1];
if (a[i] + a[i - 1] * 10 > 9 && a[i] + a[i - 1] * 10 < 35) dp[i] += dp[i - 2];
}
printf("%d", dp[i - 1]);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge