반응형
https://programmers.co.kr/learn/courses/30/lessons/12914
dp문제였습니다.
풀이방법
1칸 또는 2칸을 뛰므로 n에 도착하기 위한 경우의 수 점화식은 다음과 같습니다.
D[n] = D[n-1] + D[n-2]
Code
#include <bits/stdc++.h>
#define MOD 1234567
using namespace std;
using ll = long long;
ll d[2001];
ll dp(int num){
if(num < 0) return 0;
if(!num) return 1;
ll &ret = d[num];
if(ret!=-1) return ret;
ret = 0;
ret += dp(num-1) % MOD + dp(num-2) % MOD;
return ret % MOD;
}
ll solution(int n) {
memset(d,-1,sizeof(d));
return dp(n);
}
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - 백준(BOJ) 15592번 : 1, 2, 3 더하기 7 (0) | 2021.05.25 |
---|---|
(C++) - 프로그래머스(Summer/Winter Coding(~2018)) : 스티커 모으기(2) (0) | 2021.05.24 |
(C++) - 백준(BOJ) 2096번 : 내려가기 (0) | 2021.05.11 |
(C++) - 백준(BOJ) 15988번 : 1, 2, 3 더하기 3 (0) | 2021.05.03 |
(C++) - 백준(BOJ) 2225번 : 합분해 (0) | 2021.04.26 |