[boj] (b1) 2748 피보나치 수 2

강신현·2022년 4월 17일
0

✅ DP ✅ Bottom Up ✅ long long 형

문제

링크

풀이

1. 문제 접근 및 해결 로직

  • 초기값
    f(0)=0,f(1)=1f(0)=0,f(1)=1
  • 점화식
    f(n)=f(n1)+f(n2)f(n)=f(n-1)+f(n-2)

2. 코드

- Bottom Up (반복문, 타뷸레이션)

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

long long fibo[91];

// Bottm Up
int main(){
    
    fibo[0] = 0;
    fibo[1] = 1;
    
    int n;
    cin >> n;
    
    for(int i=2;i<=n;i++){
        fibo[i] = fibo[i-1] + fibo[i-2];
    }
    
    cout << fibo[n] << "\n";

    return 0;
}

🔥 자료형 에러

처음에

int fibo[91];

로 선언하고 문제를 풀었더니 기하급수적으로 증가하는 피보나치수열의 값을 int로 다 담을 수가 없어 틀린답이 나왔다.

✅ long long 형

따라서 int보다 더 넓은 범위를 담을 수 있는 long long 형으로 대체한다.

long long fibo[91];

4. 시간 복잡도 분석

모든 피보나치수를 구하므로
O(N)O(N)

5. 문제에서 중요한 부분

DP문제는 점화식을 도출하는 것이 중요하다.
Bottm Up(반복문)으로 풀지 Top Down(재귀)으로 풀지는 선택사항

profile
땅콩의 모험 (server)

0개의 댓글

관련 채용 정보