baekjoon 2775

윤동환·2022년 12월 26일
0

Algorithm

목록 보기
18/54
post-thumbnail

부녀회장이 될테야

내가 작성한 코드

#include <iostream>
#include <string>

using namespace std;

int getPeople(int k, int n) {
    if (n == 1)
        return 1;
    else if (k == 0) {        
        return n; 
    }
    return (getPeople(k - 1, n) + getPeople(k, n - 1));
}

int main() {
    int t, k, n;
    cin >> t;
    while (t--) {
        int p = 1;
        cin >> k >> n;
        cout << getPeople(k, n) << endl;
    }
    return 0;
}

고민한 부분

  1. 원하는 값의 수식은 원하는 층 - 1의 인원과 원하는 호수 - 1의 인원의 합과 같다.
    이를 위해 연속된 for문을 돌려서 2차 배열을 초기화 하고 해당 인덱스를 참조하는 방식을 고민했다. 하지만, 재귀를 사용하는 것이 조금더 재밌을 거같아 재귀로 구성하였다.
  2. 재귀로 구성하며 고민한 부분은
    n == 1일때 return 1을 해준것이다. 이처럼 하게되면 n이 0일때의 값을 신경쓰지 않게되며, 인덱스가 1일 때 1의 인원수가 나오도록 값을 넣을 수 있었다.
profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글