부녀회장 될 테야 문제 풀기
2018, May 09
백준에 있는 부녀회장이 될테야 문제를 풀어보았다. 문제링크
재귀적으로 먼저 풀어보고 이를 사용하지 않고 풀어보았다.
// k 층 n 호에 몇 명이 살고 있는지 알아낸다.
int countPeople(int k, int n)
{
int rCnt = 0;
if(k == 0)
return n;
for(int i=1; i<=n; i++)
{
rCnt += countPeople(k-1,i);
}
return rCnt;
}
다음은 재귀 함수 사용하지 않은 풀이
int countPeople(int k, int n)
{
// 최대 15층 14호까지 들어올 걸 알고 있다.
// 15*14 배열을 선언한다.
// 2차원 배열로 해도 되지만 이를 1차원으로 바꿔서 사용해보자.
int arr[15*14] = {0};
// 0층 1호부터 인자의 층과 호까지 계산하여 채워넣는다.
// 배열의 인덱스는 0부터 시작이지만 방은 1호가 처음임을 주의해야 한다.
for(int i=0; i<15; i++)
{
for(int j=0; j<14; j++)
{
if(i==0)
arr[14*i+ j] = j+1;
else if(j==0)
arr[14*i + j] = 1;
else
arr[14*i + j] = arr[14*i + (j-1)] + arr[14*(i-1)+j];
// k 층 n 호에 저장된 값을 return 한다.
if(i == k && j == n-1)
return arr[14*i +j];
}
}
}