[Programmers]-피보나치 수

문제

피보나치 수를 구하면 되는 문제입니다.

코드

class Solution {
    long[] memo;
    public int solution(int n) {
        int answer = 0;
        memo = new long[n+1];
        memo[1] = 1;
        memo[2] = 1;
        
        answer = (int)(fibo(n)%1234567);
        
        return answer;
    }
    
    public long fibo(int n){
        if(n <= 1)
            return memo[n]%1234567;
        else if(memo[n]!=0)
            return memo[n]%1234567;
        return memo[n] = fibo(n-2)%1234567 + fibo(n-1)%1234567;
    }
}

코드 설명

피보나치는 재귀함수로 구하지만 n값이 커질수록 시간복잡도가 급속도로 커진다.

그래서 메모이제이션을 써줘야한다.

피보나치1과 2는 1이기때문에 초기값을 넣어준다.

요약

  • 피보나치는 메모이제이션 쓴다.