거인의 코딩일지
[Lv.2_Java] 멀리 뛰기 본문
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
'알고리즘테스트 > Programmers' 카테고리의 다른 글
[Lv.0_Java] 대소문자 바꿔서 출력하기 (0) | 2023.06.02 |
---|---|
[Lv.0_Java] 배열 조각하기 (0) | 2023.06.01 |
[Lv.2_Java] 이진 변환 반복하기 (0) | 2023.06.01 |
[Lv.1_Java]문자열 p 와 y의 개수 (0) | 2023.06.01 |
[Lv.1_Java] 나누어 떨어지는 숫자 배열 (0) | 2023.06.01 |