[Programmers] 피보나치 수 (12945번) - Java Solution

문제

  • https://programmers.co.kr/learn/courses/30/lessons/12945

기억할 점

  • stack overflow 주의 - 재귀로 풀면 O(2^n)의 시간 복잡도를 가진다.
  • int 숫자의 범위도 주의 - -2,147,483,648 ~ 2,147,483,647

Solution 1

class Solution {
    int data[];
    
    int getFibonacci(int target) {
        
        if(target < 2) {
            return target;
        }
        
        if(data[target] > 0) {
            return data[target];
        }
        
        data[target] = getFibonacci(target-1)%1234567 + getFibonacci(target-2)%1234567;
        
        return data[target];
    }
    
    public int solution(int n) {
        
        data = new int[n+1];
        
        return  getFibonacci(n) % 1234567;
    }
}

Solution 2

class Solution {    
    public int solution(int n) {        
        int a = 0;
        int b = 1;
        n--;
        
        int answer = 0;
        
        while(n > 0) {
            answer = a+b;
            a = b;
            b = answer % 1234567;
            
            n--;
        }
        
        return answer % 1234567;
    }
}

Leave a comment