<소스코드>
#include <iostream>
using namespace std;
int getNum(int a, int b){
if(b == 1)
return 1;
if(a == 0)
return b;
return (getNum(a-1, b) + getNum(a, b-1));
}
int main() {
int T, k, n;
cin>>T;
for(int i=0; i<T; i++){
cin>>k>>n;
cout<<getNum(k, n)<<'\n';
}
}
- 변수
int getNum(int a, int b) : 거주민을 구하는 재귀함수
int T : 테스트케이스 개수
int k, n : 층, 호
- 알고리즘
1) 역시 수학 알고리즘 문제는 규칙을 찾는 것이 중요한 거 같다. k층 n호 = k-1층 n호 + k층 n-1호
2) 이 방식으로 재귀함수를 돌리게 되면 두 가지의 경우가 나오게 된다.
- n = 1 : 1호는 모두 1명만 살기 때문에 1을 더해주면 된다.
- k = 0 : 0층에서는 n을 더해주면 된다.
- 배운점
재귀함수의 중요성을 너무 깨달았다.
- 아쉬운점&느낀점
이 문제를 재귀로 풀어야 됨은 느꼈지만 결국에는 해내지 못했다. 재귀함수에 관한 알고리즘을 책을 통해서 좀 익혀야겠다. 또한 규칙찾기!!!! 진짜 중요한 거 같다. 항상 신경쓰자!!!