(Java)프로그래머스 - 피보나치 수

윤준혁·2024년 3월 26일

나의 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        long a = 0; // 1
        long b = 1;
        
        for (int i = 2; i <= n; i++) { // 2
            long temp = (a + b) % 1234567;
            a = b;
            b = temp;
        }
        
        answer = (int)(b % 1234567); // 3
        
        return answer;
    }
}

과정

  1. 0번째와 1번째를 초기화
  2. n까지 증가하는 반복문으로 피보나치 수열을 계산(오버플로우 방지를 위해 1234567로 나눈 나머지를 사용)
  3. int형으로 바꾼 b를 1234567로 나누어서 대입

다른 사람 풀이

class Solution {

    public int solution(int n) {
        int answer = 0;
        long[] pib=new long[n+1];
        pib[0]=0L;
        pib[1]=1L;
        int times=1;
        for(int i=2; i<=n; i++){
            pib[i]=(pib[i-1]+pib[i-2])%1234567L;
        }
        //answer=(int)(pib[n]%1234567L);
        answer=(int)(pib[n]);
        return answer;
    }
}

0개의 댓글