[프로그래머스] 멀리 뛰기 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/12914
입력 : 멀리뛰기에 사용될 칸의 수 n (1 ≤ n ≤ 2000)
출력 : 끝에 도달하는 방법 % 1234567
O(n)
dp
없음
없음
구현
class Solution {
public long solution(int n) {
// 모듈러 연산을 위한 변수
int MOD = 1234567;
// n이 1이나 2일 경우 바로 반환할 수 있도록 초기값 설정
if (n == 1) return 1;
if (n == 2) return 2;
// 동적 계획법을 위한 배열 선언
long[] dp = new long[n + 1];
// 초기 조건 설정
dp[1] = 1;
dp[2] = 2;
// 피보나치 수열의 변형으로 문제 해결
for (int i = 3; i <= n; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]) % MOD;
}
// n번째 방법의 수 반환
return dp[n];
}
}