DEV

[javaStudy] 피보나치 수

찻잔속청개구리 2024. 2. 11. 19:51
반응형

인증사진(2024-02-11)

문제

피보나치 수는 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을 완성해 주세요.

class Solution {
    public int solution(int n) {
        // n이 0이거나 1인 경우, 그대로 반환
        if (n == 0) return 0;
        if (n == 1) return 1;
        
        // 피보나치 수를 저장할 배열을 생성
        int[] fibo = new int[n + 1];
        
        // 초기값을 설정합니다.
        fibo[0] = 0;
        fibo[1] = 1;
        
        // 피보나치 수를 계산
        for (int i = 2; i <= n; i++) {
            fibo[i] = (fibo[i - 1] + fibo[i - 2]) % 1234567;
        }
        
        // n번째 피보나치 수를 반환
        return fibo[n];
    }
}

 

추가공부

     
 fibo[i]는 i번째 피보나치 수를 의미.

점화식인 fibo[i] = fibo[i - 1] + fibo[i - 2]를 사용하여 계산하는데 나머지 연산자를 사용하여 값이 너무 커지는 것을 방지하고, 문제에서 요구하는 대로 값을 1234567로 나눈 나머지를 저장하기로 한다.

반응형

'DEV' 카테고리의 다른 글

[pythonStudy] 양꼬치  (0) 2024.02.25
[javaStudy] 아이스 아메리카노  (0) 2024.02.18
[javaStudy] 숫자 문자열과 영단어  (1) 2024.02.04
[javaStudy] 같은 숫자는 싫어  (0) 2024.01.28
[javaStudy] 직사각형 별찍기  (1) 2024.01.21