- 입력: 5000자리 이하의 숫자 암호
- 출력: 나올 수 있는 해석의 가짓수 % 1000000, 암호를 해석할 수 없는 경우에는 0을 출력
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
string code;
cin >> code;
int len=code.size();
vector<int> DP(len+1);
DP[0]=DP[1]=1;
if(code[0]=='0') {
cout << 0 << endl;
return 0;
}
for(int i=2; i<=len; i++){
int one=code[i-1]-'0';
int two=(code[i-2]-'0')*10+one;
if(one>=1 && one<=9) DP[i]=(DP[i-1]+DP[i])%1000000;
//if(i==1)continue; // for first digit, not consider 2digit
if(two>=10 && two<=26) DP[i]=(DP[i-2]+DP[i])%1000000;//add one case
}
cout << DP[len] << endl;
return 0;
}
[백준(BOJ)] 11725: 트리의 부모 찾기(C++) (0) | 2025.01.03 |
---|---|
[백준(BOJ)] 1991번: 트리 순회 (0) | 2024.12.30 |
[BOJ] 14501: 퇴사 (C++) (0) | 2024.03.24 |
[BOJ] 7576: 토마토 (C++) (1) | 2024.03.05 |
[Softeer] [HSAT 7회 정기 코딩 인증평가 기출] 순서대로 방문하기 (C++) (0) | 2024.02.25 |