JXNVCE ALGO-LOG YouJin Jung

BOJ-5557

DP 문제! 구글링으로 러페런스를 구해서 풀었다.. 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;
}

image 내일 기세 기말과제가 마감인데, 아직 시작도 못했다. 오전에 멘티들끼리 만나서 회의를 해서……. 아침까지 끝내야하는데 걱정이 이만저만이 아니다… 해커톤 워크플로우 업무도 아직 남아있는데, 사실 잘 못해서 팀에게 민폐끼치는 중이다ㅜㅜ ㅜㅜ 오늘까지만 밤 진짜 제대로 새서 다 끝내보자!!! 💪🏼💪🏼