Algorithms/프로그래머스

[프로그래머스][Lv2][Java] 멀리뛰기

hyunki.Dev 2023. 2. 18. 01:18

📌 문제

멀리뛰기 - Lv2

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📌 풀이

  • 맨 처음에는 2를 나눠서 개수를 늘리는 방식을 생각했습니다... ➡️ 매우 큰 삽질...
  • ❗️그러나 이 문제의 힌트는 멀리뛰기 할 수 있는  칸의 수가 1 또는 2 라는 곳에 있습니다.
  • 멀리뛰기 할 수 있는 칸 수가 정해져 있으므로
  • 총 점프한 거리는 점프하고자 하는 위치에서 1칸 전인 곳과 2칸 전인 곳에서 점프하는 경우로 생각할 수 있습니다..
  • 따라서  numList[i] = numList[i-1] + numList[i-2] 다음과 같은 점화식이 성립합니다.

 

📌 코드

class Solution {
    public long solution(int n) {
        long answer = 0;

        long[] numList = new long[n + 1];
        

        //초기값 세팅
        numList[0] = 1;
        numList[1] = 1;
        
        for(int i = 2; i <= n; i++){
            numList[i] = (numList[i-1] + numList[i-2]) % 1234567;
        }
        return numList[n];
        
    }
}