티스토리 뷰

알고리즘/백준

[백준] 2193번 이친수

JeongHyeon 2018. 1. 3. 13:41

문제

https://www.acmicpc.net/problem/2193

풀이과정

쉬운 계단 수, 오르막 수를 풀어보고 나니 쉽게 풀 수 있었다.
먼저, D[1][0] 은 이친수의 조건 1규칙을 위반하기 때문에 0개였으며 D[1][1] 은 그냥 한개이다. 그 이후로 계속 생각해 본 결과 D[i][0]은 길이가 i-1인 수의 마지막 숫자가 0과 1일 경우의 이친수 개수를 더하면 됐다.
하지만 D[i][1] 의 경우는 이친수의 조건 2번을 적용하면 길이가 i-1이고 마지막 숫자가 0인 경우의 이친수의 개수와 같다는 사실을 알 수 있다. 이러한 결과를 식으로 나타내면 아래와 같다.

D[i][0] = D[i-1][0] + D[i-1][1]
D[i][1] = D[i-1][0]

소스코드

#include <iostream>

using namespace std;

int N;
long long D[91][2], ans;

int main()
{
    cin.sync_with_stdio(false);

    cin >> N;

    D[1][0] = 0; D[1][1] = 1;

    for (int i = 2; i <= N; i++)
    {
        D[i][0] = D[i - 1][0] + D[i - 1][1];
        D[i][1] = D[i - 1][0];
    }

    ans = D[N][0] + D[N][1];

    cout << ans << "\n";

    return 0;
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1260번 DFS와 BFS  (0) 2018.01.09
[백준] 11724번 연결 요소의 개수  (0) 2018.01.03
[백준] 11057번 오르막 수  (0) 2018.01.03
[백준] 2309번 일곱 난쟁이  (0) 2018.01.02
[백준] 11502번 붕어빵 판매하기  (0) 2017.12.29
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함