🧠 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

 

반응형