알고리즘/programmers

프로그래머스 레벨2 피보나치의 수 (JAVA)

dev-jo 2021. 7. 20. 20:28

피보나치..의수 ㅋㅋ

 

프로그래머스 레벨2 피보나치의 수를 풀었다..

 

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

 

코딩테스트 연습 - 피보나치 수

피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) =

programmers.co.kr

 

 

모든 코드는 GitHub 에 올려놓았다.

 

문제는 어렵지 않다..

 

근데 %로 나눌 때 내가 실수로 1234567을 써야 하는데

124567로 잘못 적어서 시간이 소요된 거 말곤..

 

풀이는 2개가 있다..

 

일단 재귀..

 

 

class Solution {
    public int solution(int n) {
        return recursive(0,1, n);
    }

    public int recursive(int f1, int f2 , int n ) {

        int f = (f1 +  f2) % 1234567;

        if(n == 2) {
            return f;
        }

        return recursive(f2, f, n -1);
    }


}

 

두 번째 풀이

 

class Solution {
    public int solution(int n) {
        int[] fArr = new int[n + 1];

        fArr[0] = 0; // F(0) = 0;
        fArr[1] = 1; // F(1) = 1;

        for(int i=2; i<fArr.length; i++) {
            fArr[i] = (fArr[i -1] + fArr[i - 2]) % 1234567;
        }

        return fArr[n];
    }


}

 

크게 어려운 문제는 아니었다..