내가 작성한 코드

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

+ Recent posts