Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[Lv.2_Java] 멀리 뛰기 본문

알고리즘테스트/Programmers

[Lv.2_Java] 멀리 뛰기

코딩거인 2023. 6. 1. 16:50
728x90

class Solution {
    public int solution(int n) {
        if (n <= 1) {
            return n;
        }
        int[] arr = new int[n + 1];
        arr[1] = 1;
        arr[2] = 2;
        for (int i = 3; i <= n; i++) {
            arr[i] = (arr[i - 1] + arr[i - 2]) % 1234567;
        }
        return arr[n];
    }
}

입력값 n이 1보다 작거나 같은 경우, 즉 n이 0 또는 1인 경우에는 그대로 n을 반환합니다. 왜냐면 0칸 또는 1칸을 이동하는 경우 도달 방법이 1가지 이기 때문에 이렇게 설정해주고

배열 arr를 생성하고, arr[1]과 arr[2]를 초기화합니다. arr[i]는 i칸에 도달하는 방법의 가짓수를 나타냅니다. 여기서 arr[1]은 1칸에 도달하는 방법의 가짓수인 1로 초기화하고, arr[2]는 2칸에 도달하는 방법의 가짓수인 2로 초기화합니다.

반복문을 통해 arr[3]부터 arr[n]까지의 값을 계산합니다. 각 arr[i]는 이전 두 항인 arr[i - 1]과 arr[i - 2]의 값을 더한 값이 됩니다. 

즉, arr[i] = arr[i - 1] + arr[i - 2]을 사용합니다.

계산된 arr[n]을 1234567로 나눈 나머지를 반환합니다. 이는 문제에서 요구하는 바에 따라 결과값을 처리하였고 해결!!

728x90