일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 러스트
- fluent python
- Fast API
- 블록체인
- Algorithm
- RabbitMQ
- rust
- Python
- Network
- Thread
- 전문가를 위한 파이썬
- 플랫폼
- 알고리즘
- Container
- 동시성
- function
- BlockChain
- 파이썬
- BAEKJOON
- docker
- 이더리움
- guru
- 코어 이더리움 프로그래밍
- AWS
- 백준
- IMAGE
- dockerfile
- Ethereum
- Refactoring
- Kubernetes
Archives
- Today
- Total
글쓰기 | 방명록 | 관리 |
Victoree's Blog
2011_암호코드 본문
728x90
Concept & Idea
문제 상황을 좀 더 간결히 해서, int x에 값을 넣음으로 조건문이 되게 간단해 질 수 있었다.
자리가 1자리일 때의 경우와, 2자리가 가능할 때의 경우를 나눠서 생각했으면 빠르게 풀었을 것 같다.
또한 더할 때 dp[i-1]%1000000 라고 풀었었는데, 이렇게 풀면 안된다. 더하고 나서 따로 mod를 취해주어야 한다…😢
Code
#include <iostream>
#include <string>
using namespace std;
string n;
int dp[5001];
int main() {
cin>>n;
int s=n.size();
dp[0]=1;
n=" "+n;
for(int i=1; i<=s; i++) {
int x=n[i]-'0';
if(x>=1 && x<=9) {
dp[i]+=dp[i-1];
dp[i]%=1000000;
}
if(i==1 || n[i-1]=='0')
continue;
x+=(n[i-1]-'0')*10;
if(x>=10 && x<=26) {
dp[i]+=dp[i-2];
dp[i]%=1000000;
}
}
cout<<dp[s]<<endl;
}
Fealing
처음 생각했던 것과 자꾸 다른 예시가 나오니 조건문을 너무 더럽게 붙여서 풀지 못했다.
생각을 간결히 하고, 아스키코드를 잘 이용해서 문제를 풀어보자
자꾸 전석희 교수님이 생각나는 문제다.. 이 문제는.. “-‘0’“때문인지…
728x90
'Algorithm > 2019~2020' 카테고리의 다른 글
12738_가장 긴 증가하는 부분 수열3 (0) | 2021.04.22 |
---|---|
1915_가장 큰 정사각형 (0) | 2021.04.22 |
9461_파도반 수열 (0) | 2021.04.22 |
2133_타일 채우기 (0) | 2021.04.22 |
1699_제곱수의 합 (0) | 2021.04.22 |
Comments