programming
[C++] 백준 2775 : 부녀회장이 될테야
Mysteryu
2024. 4. 18. 21:17
풀이
예를 들어, 2층 3호의 거주민 수를 알고 싶다면 0층의 1호 ~ 3호의 거주민 수, 1층의 1호 ~ 3호 거주민 수를 알고 있으면 된다. 즉, k층의 n호의 거주민 수를 알고 싶다면 (k-1)층 까지의 1호 ~ n호 거주민 수를 알고 있으면 된다.
먼저, 동적할당으로 n 사이즈의 배열을 선언 후, 0층의 1호(배열 index : 0)에서 n호 (배열 index : 1) 의 거주민 수를 초기화 한다.
이후 1층부터 K층까지 차례대로 거주민 수를 계산하게 된다
다이나믹 프로그래밍이라는 힌트를 알게되면 무난하게 풀 수 있는 문제이다.
#include <iostream>
int main() {
int t; //test case num
std::cin >> t;
int k, n; // k : floor, n : room num
for (int i = 0; i < t; i++) {
std::cin >> k >> n;
int* arr = new int[n];
for (int j = 0; j < n; j++) {
arr[j] = j + 1;
}
for (int x = 1; x <= k; x++) {
for (int y = 1; y < n; y++) {
arr[y] += arr[y - 1];
}
}
std::cout << arr[n-1] << std::endl;
delete[] arr;
}
}