본문 바로가기

알고리즘/BOJ

[C++] 백준 2193번 - 이친수


0. 문제

 

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

 

1. 아이디어

 

1) 1. 0으로 시작할 수 없다2. 1은 연속해서 나오지 못한다 를 고려해서 문제를 푼다.

 

2) 즉, N=1일 때 나올 수 있는 건 '1' 하나 뿐이고 N 레벨에서 1이 나오려면 N-1 레벨에선 반드시 0이어야만 한다. (0은 상관 없음)

 

2. 소스코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
int main()
{
    int N;
    std::cin >> N;
 
    long long dp[91][2= { 0, };
 
    dp[1][1= 1;
 
    for (int i = 2; i <= N; i++)
    {
        dp[i][0= dp[i - 1][0+ dp[i - 1][1];
        dp[i][1= dp[i - 1][0];
    }
    std::cout << dp[N][0+ dp[N][1];
}
cs

 

3. 결과

 

 

4. 피드백

 

  • 자료형도 고려해주자.. int가 만능이 아니다.