Doby's Lab

백준 15624번: 피보나치 수 7 (C++) 본문

PS/BOJ

백준 15624번: 피보나치 수 7 (C++)

도비(Doby) 2022. 6. 6. 22:58

https://www.acmicpc.net/problem/15624

 

15624번: 피보나치 수 7

첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다.

www.acmicpc.net


Solved By: DP, map

 

n의 범위가 [1, 1,000,000]으로 너무 큽니다. 배열을 선언할 수도 없기 때문에 map을 사용하여 dp를 돌려봤습니다.

#include <iostream>
#include <map>
#define MOD 1000000007
using namespace std;

int n;
map<int, int> m;

int fibo(int n){
    if(n == 0) return 0;
    else if(n == 1 || n == 2) return 1;
    else{
        if(!m[n]) return m[n] = (fibo(n - 1) % MOD + fibo(n - 2) % MOD) % MOD;
        else return m[n];
    }
}


int main(){
    cin >> n;
    cout << fibo(n);
    return 0;
}

 

728x90