코딩테스트(Level 2)

[JAVA, Programmers] 피보나치 수(자바)

justdoIT0730 2022. 11. 28. 15:58
728x90
728x90

1. 문제 설명

 피보나치 수는 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) = 2 + 3 = 5

 

 와 같이 이어집니다. 2 이상의 n 입력되었을 , n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution 완성해 주세요.

 

2. 제한 사항

n 2 이상 100,000 이하인 자연수입니다.

 

3. 입출력

n return
3 2
5 5

 

4. 입출력 설명

피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 같이 이어집니다.

 

5. 풀이

class Solution {
    public int solution(int n) {
        int [] a = new int [100001];
        a[0]=0; a[1]=1;
        for(int i =2; i<=n; i++) {
            a[i] = (a[i-2]+ a[i-1])%1234567;            
        }
        return a[n];
    }
}

 

더보기

 으음,,, 뭔가... 진짜 억지로 푼 느낌이다.. int 범위 내 최댓값을 피하기 위해 배열에 저장할 때 바로 1234567을 나눠서 저장할 수 있도록 하고 어차피 n의 최댓값이 100000으로 나와서,, 이런 식은 아닌 것 같지만 일단 다음 문제를 풀러 가봐야겠다..

728x90
728x90