이렇게 총 4가지 경우를 모두 고려해야 한다. 또한 1000000으로 나눈 나머지를 출력해야 하는 조건도 매우 중요!
package BOJ.DP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class G2011 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
String str = br.readLine();
int[] dp = new int[str.length()+1];
dp[0] = 1;
if(str.charAt(0) >= '1' && str.charAt(0) <= '9') {
dp[1] = 1;
for (int i = 1; i < str.length(); i++) {
char first = str.charAt(i);
boolean f1 = false;
boolean f2 = false;
if(first >= '1' && first <='9') f1 = true;
String sec = str.substring(i-1,i+1);
if(Integer.parseInt(sec) >= 10 && Integer.parseInt(sec) <= 26) {
f2 = true;
}
if(f1 == false && f2 == true) {
dp[i+1] = (dp[i-1])%1000000;
} else if (f1 == false && f2 == false) {
break;
} else {
if(f2 == false) {
dp[i+1] = (dp[i])%1000000;
} else {
dp[i+1] = (dp[i]+dp[i-1])%1000000;
}
}
}
System.out.println((dp[str.length()])%1000000);
}
else System.out.println(0);
}
}
4가지 경우를 모두 고려해야 하는 점이 살짝 까다로웠다.. 모든 경우의 수 생각하고 풀기!