0. 문제 |
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가 만능이 아니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 2156번 - 포도주 시식 (0) | 2020.03.15 |
---|---|
[C++] 백준 9465번 - 스티커 (0) | 2020.03.14 |
[C++] 백준 11057번 - 오르막 수 (0) | 2020.03.14 |
[C++] 백준 10844번 - 쉬운 계단 수 (0) | 2020.03.14 |
[C++] 백준 9095번 - 1, 2, 3 더하기 (0) | 2020.03.14 |