🔗 백준 2748 - 피보나치 수 2
문제


알고리즘 분류
풀이
1. DP 초기화
- n범위가 90보다 작거나 같은 자연수이므로 91개 배열 생성 후 -1로 초기화
- 0, 1, 2번에 값 대입
int n = Integer.parseInt(br.readLine());
dp = new long[91];
for(int i = 0; i<91; i++){
dp[i] = -1;
}
dp[0] = 0; dp[1] = 1; dp[2] = 1;
dp[n] = fibo(n);
2. 피보나치 함수
- 값이 -1이라면 f(n) = f(n-1) + f(n-2) 식을 통한 계산
public static long fibo(int n){
if(dp[n] == -1)
dp[n] = fibo(n-1) + fibo(n-2);
return dp[n];
}
전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static long[] dp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
dp = new long[91];
for(int i = 0; i<91; i++){
dp[i] = -1;
}
dp[0] = 0; dp[1] = 1; dp[2] = 1;
dp[n] = fibo(n);
System.out.println(dp[n]);
}
public static long fibo(int n){
if(dp[n] == -1)
dp[n] = fibo(n-1) + fibo(n-2);
return dp[n];
}
}