티스토리 뷰
보면 알겠지만, 현재 층의 호수 거주인을 구하려면 이전 층의 값이 필요하다. 재귀의 냄새가 난다.
식으로 정리해보면... fn(k) = fn(k-1)+fn-1(k)이다.
n층k호 거주민 수 = n층 k-1호 거주민 수 + n-1층 k호 거주민 수 라는 얘기다.
f1(k) = k, fn(1) = 1 이라는 초기화 조건이 있다.
int apartment(int floor, int room) {
if(floor == 0 || room == 1) {
return room;
} else {
return apartment(floor, room-1)+apartment(floor-1,room);
}
}
이를 이용한 재귀함수를 짜서 돌렸다.
고등학교 수열 공부를 다시 해두면 여러모로 편해질 것 같다.
'■ 알고리즘 > ◻ 백준' 카테고리의 다른 글
[C++]1929번: 소수 구하기 (0) | 2022.10.26 |
---|---|
[C++]10757번: 큰 수 A+B (0) | 2022.10.25 |
[C++]2566번: 최댓값 (0) | 2022.10.25 |
[C++] 2869번: 달팽이는 올라가고 싶다 (0) | 2022.10.23 |
[C++] 1193번: 분수찾기 (0) | 2022.10.23 |