BOJ-5557
23 Jul 2021DP 문제! 구글링으로 러페런스를 구해서 풀었다.. DP
화이팅
#include<iostream>
#include<cstring>
using namespace std;
#define MAX 101
int N;
int arr[MAX];
long long DP[MAX][1001];
int result;
long long checkDP(int index, int sum) {
if (sum < 0 || sum > 20) return 0;
if (index == N - 2) {
if (sum == result)
DP[index][sum] = 1;
else
DP[index][sum] = 0;
return DP[index][sum];
}
if (DP[index][sum] != -1)
return DP[index][sum];
long long check = 0;
check += checkDP(index + 1, sum + arr[index + 1]);
check += checkDP(index + 1, sum - arr[index + 1]);
return DP[index][sum] = check;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> N;
for (int i = 0; i < N - 1; i++)
cin >> arr[i];
cin >> result;
// memset function => set memory's value with wanted size!
memset(DP, -1, sizeof(DP));
cout << checkDP(0, arr[0]);
return 0;
}
내일 기세 기말과제가 마감인데, 아직 시작도 못했다. 오전에 멘티들끼리 만나서 회의를 해서……. 아침까지 끝내야하는데 걱정이 이만저만이 아니다… 해커톤 워크플로우 업무도 아직 남아있는데, 사실 잘 못해서 팀에게 민폐끼치는 중이다ㅜㅜ ㅜㅜ 오늘까지만 밤 진짜 제대로 새서 다 끝내보자!!! 💪🏼💪🏼