알고리즘/PS - 프로그래머스

[프로그래머스 - Java] 멀리 뛰기

excited-hyun 2021. 8. 6. 16:13
반응형

https://programmers.co.kr/learn/courses/30/lessons/12914

 

코딩테스트 연습 - 멀리 뛰기

효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2

programmers.co.kr

 

풀이

 

이 문제는 프로그래머스에 레벨 3으로 올려져 있는 문제인데... 그럴 난이도는 절대 아닌듯해요. 레벨2로 내려가야하지 않나 싶습니다.

 

저는 이 문제를 푸는데에 규칙을 찾아서 풀었습니다.

이동할 수 있는 칸은 1칸 또는 2칸입니다.

이를 통해서 생각할 수 있는 것은 만약 5칸을 이동하는 경우 (3칸을 이동하고 2칸을 더 이동)하거나 (4칸을 이동하고 1칸을 더 이동)하는 경우 뿐이라는 것입니다.

 

이러한 규칙으로 아래와 같은 점화식이 도출됩니다.

f(1) = 1
f(2) = 2
f(n) = f(n-1) + f(n-2) (n>=3)

이를 그대로 코드에 구현하기만 하면 되는 문제입니다.

 

class Solution {
    
    public long solution(int n) {
        long answer = 0;
        long[] way = new long[2001];
        
        way[1] = 1;
        way[2] = 2;
        
        for(int i=3; i<=n; i++){
            way[i] = way[i-1]+way[i-2];
            way[i] %= 1234567;
        }
        
        answer = way[n];
        
        return answer;
    }
}
728x90
반응형