[프로그래머스]

프로그래머스 멀리 뛰기 C++

Hevton 2023. 8. 21. 17:14
반응형

처음에는 혹시나 해서 dfs로 해봤지만 역시나 시간초과가 발생했다.

 

직접 나열해보니 규칙성을 찾을 수 있었는데

dp[ i ] = dp [ i - 1 ] + dp [ i - 2 ] 라는 점이다.

 

나중에 생각해보니 그 이유는

2칸 이전에서 뛰는 경우와 1칸 이전에서 뛰는 경우를 합치면 되기 때문이다.

#include <string>
#include <vector>

using namespace std;

int dp[2001]; // dp[i]는 i까지 가는 경우의 수


// 1 -> 1 
// 2 -> 2
// 3 -> 3
// 4 -> 5
// 5 -> 8


long long solution(int n) {
    long long answer = 0;
    
    dp[1] = 1;
    dp[2] = 2;
    
    for(int i = 3; i <= n; i++) {
        dp[i] = (dp[i - 1] + dp[i - 2]) % 1234567;
    }
    
    
    return dp[n];
}
반응형