diff --git a/oesnuj/DP/2775.cpp b/oesnuj/DP/2775.cpp new file mode 100644 index 0000000..c7cf2e6 --- /dev/null +++ b/oesnuj/DP/2775.cpp @@ -0,0 +1,53 @@ +/*풀이1 재귀만 이용*/ +//#include +//using namespace std; +// +//int calc(int k, int n) { +// if (k == 0) return n; +// int sum = 0; +// for (int i = n; i > 0; i--) { +// sum += calc(k - 1, i); +// } +// return sum; +//} +// +//int main() +//{ +// int T, k, n; +// cin >> T; +// while (T--) { +// cin >> k >> n; +// cout << calc(k, n) << "\n"; +// } +// return 0; +//} + +/*풀이2, 재귀 + DP*/ +#include +#include +using namespace std; + +vector> dp; + +int calc(int k, int n) { + if (k == 0) return n; + if (dp[k][n] != -1) return dp[k][n]; // 이미 계산된 값이면 반환 + + int sum = 0; + for (int i = n; i > 0; i--) { + sum += calc(k - 1, i); + } + return dp[k][n] = sum; // 계산된 값을 저장하고 반환 +} + +int main() +{ + int T, k, n; + cin >> T; + while (T--) { + cin >> k >> n; + dp = vector>(k + 1, vector(n + 1, -1)); //케이스별 DP 테이블 초기화 + cout << calc(k, n) << "\n"; + } + return 0; +} diff --git a/oesnuj/README.md b/oesnuj/README.md index bc15eeb..7d0b194 100644 --- a/oesnuj/README.md +++ b/oesnuj/README.md @@ -14,4 +14,5 @@ | 10차시 | 2024.07.04 | 구현 | [상어초등학교](https://www.acmicpc.net/problem/21608) | [#34](https://github.com/AlgoLeadMe/AlgoLeadMe-10/pull/34) | | 11차시 | 2024.07.18 | 이분 탐색 | [랜선 자르기](https://www.acmicpc.net/problem/1654) | [#38](https://github.com/AlgoLeadMe/AlgoLeadMe-10/pull/38) | | 12차시 | 2024.07.24 | 재귀 | [하노이 탑](https://www.acmicpc.net/problem/1914) | [#41](https://github.com/AlgoLeadMe/AlgoLeadMe-10/pull/41) | +| 13차시 | 2024.07.28 | DP | [부녀회장이 될테야](https://www.acmicpc.net/problem/2775) | [#44](https://github.com/AlgoLeadMe/AlgoLeadMe-10/pull/44) | ---