PROGRAMMERS/연습문제

[프로그래머스] [JAVA] [Level 2] [연습문제] 멀리 뛰기

c0mmedes 2022. 9. 21. 17:36



class Solution {
    public long solution(int n) {
        long answer = 0;
        
        long arr[] = new long[n+1];
        
        // 피보나치의 수열 알고리즘 적용
        arr[0] = arr[1] = 1;        
        
        for(int i=2; i<=n; i++){
            arr[i] = (arr[i-1] + arr[i-2]) % 1234567 ;
        }
   
        answer = arr[n];
        return answer;
    }
}
  • 처음에는 감이 안와서 고민을 좀 했다.
  • 그래서 고민을 하다가 그냥 구해보다보니 피보나치 수열 문제였다.
  • 1칸 -> (1)

    2칸 -> (1, 1) (2)

    3칸 -> (1, 1, 1) 
              (2, 1) (1, 2)

    4칸 -> (1, 1, 1, 1) 
              (2, 1, 1) (1, 2, 1) (1, 1, 2)

    5칸 -> (1, 1, 1, 1, 1) 
              (2, 1, 1, 1) (1, 2, 1, 1) (1, 1, 2, 1) (1, 1, 1, 2)
              (2, 1, 2) (2, 2, 1) (1, 2, 2) 

    1칸 1개
    2칸 2개
    3칸 3개
    4칸 5개
    5칸 8개