티스토리 뷰

보면 알겠지만, 현재 층의 호수 거주인을 구하려면 이전 층의 값이 필요하다. 재귀의 냄새가 난다.

식으로 정리해보면... 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함