내가 작성한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <iostream>
using namespace std;
long long T[91][2] = { 0 };
int main(void) {
int N;
cin >> N;
T[1][0] = 0;
T[1][1] = 1;
for (int i = 2; i <= N; i++) {
T[i][1] = T[i - 1][0];
T[i][0] = T[i - 1][0] + T[i - 1][1];
}
long long sum = T[N][0] + T[N][1];
cout << sum << '\n';
}
|
cs |
- 0이 올 경우의 수와 1이 올 경우의 수를 더하면서 계산한다.
- N자릿수의 이친수에서 가장 끝자리 수가 0이라면 이전에 1과 0 둘 다 올 수 있다.
- 끝자리 수가 1이면 1이 2번 연속 붙어있으면 이친수가 성립되지 않으므로 0 하나만 올 수 있다.
- 따라서 위 코드의 for문 안의 공식이 성립한다.
- 처음에 int형으로 선언하여 범위를 벗어난 값 때문에 틀렸으나 long long 타입으로 선언하여 해결할 수 있었다.
코드 채점 결과
'BAEKJOON' 카테고리의 다른 글
[BaekJoon]10989번 - 수 정렬하기 3 (0) | 2019.08.01 |
---|---|
[BaekJoon]9465번 - 스티커 (0) | 2019.07.31 |
[BaekJoon]11057번 - 오르막 수 (0) | 2019.07.30 |
[BaekJoon]10825번 - 국영수 (0) | 2019.07.30 |
[BaekJoon]10814번 - 나이순 정렬 (0) | 2019.07.29 |