🧠 Algorithm/[JAVA] Programmers
[12914번] 멀리 뛰기
0_ch4n
2022. 8. 2. 13:15
반응형
✔️ 문제 설명
효진이는 멀리 뛰기를 연습하고 있습니다.
효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다.
칸이 총 4개 있을 때, 효진이는
(1칸, 1칸, 1칸, 1칸)
(1칸, 2칸, 1칸)
(1칸, 1칸, 2칸)
(2칸, 1칸, 1칸)
(2칸, 2칸)
의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다.
멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내,
여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요.
예를 들어 4가 입력된다면, 5를 return하면 됩니다.
✔️ 제한 사항
- n은 1 이상, 2000 이하인 정수입니다.
✔️ 입출력 예
입출력 예 #1
위에서 설명한 내용과 같습니다.
입출력 예 #2
(2칸, 1칸)
(1칸, 2칸)
(1칸, 1칸, 1칸)
총 3가지 방법으로 멀리 뛸 수 있습니다.
✔️ 코드 구상
규칙성을 찾아보자.
1칸이라면 1가지 방법, 2칸이라면 2가지 방법, 3칸이라면 3가지 방법, 4칸이라면 5가지 방법, 5칸이라면 8가지 방법이다.
1,2,3,5,8 무엇이 보이지 않는가? 피보나치 수열이다.
✔️ 코드
import java.util.*;
class Solution {
static Integer[] dp = new Integer[2001];
public long solution(int n) {
long answer = 0;
dp[0] = 1;
dp[1] = 1;
answer = fibonacci(n) % 1234567;
return answer;
}
public Integer fibonacci(int n) {
if(dp[n] == null) {
dp[n] = (fibonacci(n - 2) + fibonacci(n - 1)) % 1234567;
}
return dp[n];
}
}
📄 원문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형