public class Solution {
// 멀리 뛰기
// 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다.
// 칸의 수 n이 주어질 때 끝에 도달하는 방법이 몇 가지인지 알아내, 1234567로 나눈 나머지를 리턴하는 함수 solution을 완성하세요
static int[] dpArr = {};
// solve 함수는 solve(n) == solve(n - 1) + solve(n - 2) 조건을 만족한다.
// 구하고자 하는 값이 solve(n) % 1234567 이고
// (A + B) % C => ((A % C) + (B % C)) % C 이므로
// (solve(n - 1) + solve(n - 2)) % 1234567 => ((solve(n - 1) % 1234567) + (solve(n - 2) % 1234567)) % 1234567 을 구하면 된다.
public static int solve(int n) {
if (n == 1 || n == 2) { // solve(1) == 1, solve(2) == 2
return n;
}
if (dpArr[n] != 0) {
return dpArr[n];
}
dpArr[n] = (solve(n - 1) % 1234567) + (solve(n - 2) % 1234567);
return dpArr[n];
}
public static long solution(int n) {
long answer = 0;
dpArr = new int[2001]; // n은 1 이상, 2000 이하인 정수
answer = (solve(n) % 1234567);
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(solution(4)); // 5
}
}
(A + B) % C => ((A % C) + (B % C)) % C
프로그래머스 멀리 뛰기 문제 풀이 Java
'Java > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 [Level-3] 등굣길 (0) | 2022.11.28 |
---|---|
[Java] 프로그래머스 [Level-3] 단속카메라 (0) | 2022.11.28 |
[Java] 프로그래머스 [자비스앤빌런즈 2022 코딩테스트] 선거 (0) | 2022.11.28 |
[Java] 프로그래머스 [Level-2] 올바른 괄호 (0) | 2022.11.28 |
[Java] 프로그래머스 [Level-2] 구명보트 (0) | 2022.11.27 |