반응형
문제
풀이
k층의 n호에 거주하는 사람은 아래의 표와 같다.
재귀함수를 이용하여, getNum 함수를 만들었다.
int getNum(int x, int y) {
if (y == 1) {
return 1;
}
else if (x == 0) {
return y;
}
else {
return (getNum(x - 1, y) + getNum(x, y - 1));
}
}
if else 문을 이용하여 n = 1인 경우에는, 항상 한 명이 거주하고 있기 때문에 return 1을
k = 0인 경우에는, 항상 n명이 거주하고 있기 때문에 return n을 해주었다.
위의 경우가 아니라면, (k층의 n-1호) + (k-1층의 n호) = (k층의 n호)가 성립한다.
코드
#include <iostream>
using namespace std;
int getNum(int x, int y) {
if (y == 1) {
return 1;
}
else if (x == 0) {
return y;
}
else {
return (getNum(x - 1, y) + getNum(x, y - 1));
}
}
int main() {
int T, k, n;
cin >> T;
for (int i = 0; i < T; i++) {
cin >> k >> n;
cout << getNum(k, n) << endl;
}
}
결과
반응형
'Programming > C++ - 백준' 카테고리의 다른 글
[백준] 2748번 : 피보나치 수 2 | int & long long 범위 (C++) (0) | 2023.05.24 |
---|---|
[백준] 2747번 : 피보나치 수 - (C++) (1) | 2023.05.24 |
[백준] 1546번 : 평균 - (C++) (2) | 2023.05.16 |
[백준] 11654번 : 아스키 코드 - (C++) (0) | 2023.04.20 |
[백준] 2675번 : 문자열 반복 - (C++) (0) | 2023.04.20 |
댓글