[BOJ-Code] 2748 - 피보나치 수 2

Posted by DHniyeo Blog on March 10, 2024

문제 링크

💡 다이나믹 프로그래밍/수학

Memory 1112KB Time 0ms Code Length 333B

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
using namespace std;

int n;
long long memo[100] = {0,1};
long long fibo(int n) {
	if (n == 0 || n == 1) {
		return memo[n];
	}
	if (memo[n] == 0) {
		memo[n] = fibo(n - 1) + fibo(n - 2);
		return memo[n];
	}
	return memo[n];

}
int main()
{
	scanf("%d", &n);
	long long result = fibo(n);
	printf("%lld", result);
}

~이 코드는 피보나치 수열을 재귀적으로 계산하는 함수를 이용하여 사용자로부터 입력받은 숫자에 해당하는 피보나치 수를 출력하는 프로그램이다. n을 입력받고, memo 배열에는 이미 계산된 피보나치 수열의 값을 저장한다. fibo 함수는 n이 0 또는 1일 때는 memo 배열에서 값을 반환하고, 그 외의 경우에는 memo 배열에 값이 없다면 n-1과 n-2의 피보나치 수를 재귀적으로 계산하여 memo 배열에 저장하고 반환한다. main 함수에서는 사용자로부터 n을 입력받고, fibo 함수를 호출하여 결과를 출력한다.