반응형

문제 설명

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

 

제한 사항

* n은 1이상, 100000이하인 자연수입니다.

 

입출력 예

return
3 2
5 5

나의 코드

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

 

다른 사람 코드

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;
    }
}
반응형

'Algorithm Study > Programmers' 카테고리의 다른 글

스킬트리/java  (0) 2019.08.28
N개의 최소공배수/java  (0) 2019.08.28
자연수 뒤집어 배열로 만들기/java  (0) 2019.08.28
약수의 합 / java  (0) 2019.08.28
수박수박수박수박수박수?/java  (0) 2019.08.28

+ Recent posts