알고리즘의 기초 이론 중 하나인 피보나치 수에 대하여 간단하게 기록한 글입니다.
정의
피보나치 수는 첫째 항, 둘째 항이 1이고 N번째 항이(N>=2) 직전 두 항의 합을 값으로 가지는 수열입니다.
1. 연습 문제
기본적인 피보나치 수 관련 문제입니다.
2747번: 피보나치 수
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
1-1. 방법 (시간 초과)
재귀적인 방식으로 솔루션을 작성할 수 있습니다. 허나 이 방식으로는 연습 문제를 해결할 수 없습니다. 연습 문제의 시간 제한이 1초이기 때문입니다.
#include<iostream>
using namespace std;
int fib(int idx){
if(idx==0) { return 0; }
else if(idx==1) { return 1; }
return fib(idx-1) + fib(idx-2);
}
int main(){
int N, answer;
cin >> N;
answer = fib(N);
cout << answer;
return 0;
}
1-2. 방법
배열을 하나 만들어 반복문을 활용하여 연습 문제를 풀 수 있습니다.
#include<iostream>
using namespace std;
int fib[46] = {0, };
int main(){
int N;
cin >> N;
fib[1] = 1;
for(int i=2; i<= N; i++){
fib[i] = fib[i-1] + fib[i-2];
}
cout << fib[N];
return 0;
}
2. 연습 문제
첫 번째 연습 문제와 달리 분할 정복을 알고 있어야 해결할 수 있는 문제입니다.
11444번: 피보나치 수 6
첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
출처
피보나치 수 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 피보나치 수를 이용한 사각형 채우기 수학에서 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다.
ko.wikipedia.org
'컴퓨터공학 & 정보통신' 카테고리의 다른 글
[디자인패턴] 어댑터(Adapter) 패턴에 대한 이해 (0) | 2023.08.09 |
---|---|
[디자인패턴] 싱글톤(Singleton) 패턴에 대한 이해 (0) | 2023.08.09 |
[머신러닝] Unsupervised Learning (0) | 2023.06.12 |
[머신러닝] Model Selection (0) | 2023.06.12 |
[머신러닝] Resampling (0) | 2023.06.12 |