문제
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include<iostream>
constexpr int MAX = 45;
//동적 계획법으로 풀어보자
int main() {
int number;
int Fibonacci[MAX];
Fibonacci[0] = 0;
Fibonacci[1] = 1;
std::cin >> number;
for (int i = 2; i <= number; ++i) {
Fibonacci[i]=Fibonacci[i - 2] + Fibonacci[i - 1];
}
std::cout << Fibonacci[number] << "\n";
}
|
동적 계획법으로 푼 방법
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include<iostream>
// 피보나치 n= (n-2)+(n-1)
int Fibonacci(int number) {
if (number <= 1)return number;
return Fibonacci(number - 2) + Fibonacci(number - 1);
}
int main() {
int number;
std::cin >> number;
std::cout << Fibonacci(number) << "\n";
}
|
재귀함수 기법으로 푼 방법
후기
재귀함수 기법으로 풀었지만 역시나 시간초과가 걸려서 동적 계획법으로 풀었다. 재귀함수와 메모이제이션 방법을 사용해보기에는 좋은 문제라고 생각한다.
출처 및 레퍼런스
문제 링크:https://www.acmicpc.net/problem/2747
Wiki: https://ko.wikipedia.org/wiki/%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98_%EC%88%98
관련글
[자료구조 알고리즘/이론] - 동적 계획법과 분활 정복
[온라인 코딩/다이나믹 플밍(Dynamic)] - [백준] 2748번 피보나치 수 2
[온라인 코딩/다이나믹 플밍(Dynamic)] - [구름IDE] 특정 구간의 합(★3)
'온라인 코딩 > 다이나믹 플밍(Dynamic)' 카테고리의 다른 글
[구름IDE] 특정 구간의 합(★3) (0) | 2020.04.21 |
---|---|
[백준] 2748번 피보나치 수 2 (0) | 2020.02.17 |