[코딩테스트] 피보나치 수

김소영·2025년 3월 7일

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

정직하게 풀면 되는 문제지만 n의 단위가 오르면 피보나치 수의 크기 역시 기하급수적으로 오르는 것을 감안해야 한다.
처음에 그냥 풀었다가 오버플로우 탓에 테스트케이스에서 오류가 났다.
어차피 나머지만 구하면 되는 것이므로 매 sum값에 1234567의 나머지를 입력한 뒤 결과를 내게끔 하니 해결되었다.

풀이

class Solution {
    public long solution(int n) {
        long answer = 0;
        long[] sum = new long[n+1];
        sum[0]=0;
        sum[1]=1;
        for(int i=2;i<=n;i++){
            sum[i] = sum[i-1] + sum [i-2];
            sum[i]%=1234567;
        }
        answer = sum[n]%1234567;
        return answer;
    }
}
profile
발전을 위해 노력하는 개발자가 되겠습니다!

0개의 댓글