반응형
programmers.co.kr/learn/courses/30/lessons/12902
dp문제였습니다.
풀이방법
점화식 : d[i] = 3 * d[i-2] + 2 * d[d[0] + d[2] + .... + d[i-4]]
Code
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int solution(int n) {
int answer = 0;
vector <ll> d(n+1,0);
d[0] = 1;
for(int i = 2; i <= n; i+=2){
d[i] = 3 * d[i-2] % 1000000007;
for(int j = 0; j <= i - 4; j += 2)
d[i] += 2 * d[j] % 1000000007;
}
return d[n] % 1000000007;
}
int main(){
cout << solution(50);
}
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - 프로그래머스(고득점 kit - 동적계획법(DP)) : 등굣길 (0) | 2021.02.21 |
---|---|
(C++) - 프로그래머스(고득점 kit - 동적계획법(DP)) : 정수 삼각형 답 (0) | 2021.02.20 |
(C++) - 백준(BOJ) 9625번 : BABBA 답 (0) | 2021.02.07 |
(C++) - 백준(BOJ) 2346번 : 풍선 터뜨리기 답 (0) | 2021.02.03 |
(C++) - 백준(BOJ) 13703번 : 물벼룩의 생존확률 답 (0) | 2020.09.25 |