https://www.acmicpc.net/problem/2748
n번째 피보나치 수를 배열에 저장해놓는다.
그러면 n번째까지의 피보나치 수를 구하는데 O(n)이 걸리고 그 이후로 접근할 때는 O(1)이면 바로 접근 가능하다.
i번째 피보나치 수 = i-1번째 피보나치 수 + i-2번째 피보나치 수
0번째와 1번째를 미리 넣어놓고 이 점화식을 이용하면 모든 피보나치수를 구할 수 있다.
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
|
#include <iostream>
using namespace std;
long long pibo[91];
int main()
{
int n;
cin >> n;
pibo[0] = 0;
pibo[1] = 1;
for (int i = 2; i <= 90; i++) {
pibo[i] = pibo[i - 1] + pibo[i - 2];
}
cout << pibo[n];
return 0;
}
Colored by Color Scripter
|
'BOJ' 카테고리의 다른 글
[BOJ] 1806. 부분합 (0) | 2019.07.16 |
---|---|
[BOJ] 2003. 수들의 합 2 (0) | 2019.07.15 |
[BOJ] 14889. 스타트와 링크(비트마스크 풀이) (0) | 2019.07.11 |
[BOJ] 14391. 종이 조각 (0) | 2019.07.11 |
[BOJ] 1182. 부분수열의 합 (0) | 2019.07.11 |