본문 바로가기

algorithm/exercise

[BOJ 2748] 백준 2748 피보나치 수 2

 

#입출력

예제 입력1 :: 10

예제 출력1 :: 55

 

#문제 해결 방법

dp를 사용하는 것이 최선의 방법.

dp[91]의 배열을 선언한 후(**n은 최대 90까지 값을 가지므로, 91개의 배열을 선언했다.),

dp[0]과 dp[1]을 활용해서, dp[2]를 구하고,

dp[1]과 dp[2]을 활용해서, dp[3]을 구하는 방법으로 입력 값 까지 dp값을 구했다.

 

dp[90] 값을 구할 때는, 값이 상당히 커진다. (**2880067194370816120)

따라서 dp배열을 long long으로 선언하는 것이 **포인트**였다.

 

#include <iostream>

using namespace std;

void
fibonacci (int number){
    long long dp[91];
    dp[0]=0;
    dp[1]=1;

    for(int i=2; i<=(number + 1);i++){
        dp[i] = dp[i-1] + dp[i-2];
    }
    
    cout<<dp[number]<<endl;
}

int 
main(){
    int insert_value;
    cin>>insert_value;
    fibonacci(insert_value);

    return 0;
}

# 20줄 정도의 간단한 코드로 표현할 수 있었다.

 

#아쉬웠던 점

## 처음에, main함수의 return 값을 1로 하는 바람에, 런타임 에러가 계속 났다.