티스토리 뷰

문제 출처 : https://www.acmicpc.net/problem/2011

분류 : 다이나믹 프로그래밍


백준 2011 암호코드

DP


구현 포인트

1) DP로 2자리로 끝나는 경우, 1자리로 끝나는 경우를 저장해준다.

2) 해석이 안되는 경우에는 0을 찍어야 한다.


이 문제는 다소 쉬우나 정답률이 낮다.


이유는 나처럼 멍청한 사람들이 해석이 안되는 경우에 대해 고려하지 않아서... 일 것이라는 생각이 든다.


한창 그것 때문에 틀렸습니다가 떠서 여기 글을 남겨 놓기로 하였다.


코드는 아래와 같다.


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
#include<iostream>
#include<string>
#define MOD 1000000
using namespace std;
 
int DP[5000][2];
int main() {
    string str;
    int len;
    cin >> str;
    len = (int)str.length();
    if (len == 1) { if (str[0!= '0') DP[0][0= 1; }
    else {
        DP[0][0= 1;
        for (int i = 1; i < len; i++) {
            if(str[i]!='0')
                DP[i][0= (DP[i - 1][0+ DP[i - 1][1]) % MOD;
            if (str[i - 1== '1' || (str[i - 1== '2' && str[i] < '7')) {    
                DP[i][1= DP[i - 1][0];
            }
        }
    }
    cout << (DP[len - 1][0+ DP[len - 1][1]) % MOD << '\n';
    return 0;
}
cs


'Problem & Solving > Beakjoon judge' 카테고리의 다른 글

[5397] 키로거  (0) 2018.04.14
[1072] 게임  (0) 2018.03.23
[11000] 강의실 배정  (0) 2018.03.10
[1517] 버블 소트  (0) 2018.03.07
[1086] 피보나치 수의 합  (0) 2018.02.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함