백준 문제풀이
2775번 : 부녀회장이 될테야
하다블
2022. 5. 18. 18:03
반응형
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/2775
2775번: 부녀회장이 될테야
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
www.acmicpc.net
풀이 코드는 다음과 같습니다.
#include <iostream>
using namespace std;
int main(void) {
int arr[15][15]={{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}};
for(int i{1};i<15;i++)
{
for(int j{1};j<15;j++)
{
if(j==1)
{
arr[i][j]=1;
}
else
{
arr[i][j]=arr[i-1][j]+arr[i][j-1];
}
}
}
int n;
cin>>n;
for(int i{0};i<n;i++)
{
int a,b;
cin>>a>>b;
cout<<arr[a][b]<<endl;
}
return 0;
}
이 문제의 포인트는 a동 b호에 살면, 그 아래 층에 있는 a-1동의 1호부터 b호까지의 인원의 합이 되어야 한다는 점입니다.
하지만 1호는 1명만 살아도 조건을 만족하므로 a동과 무관하게 1이며, 알고싶은 a동 b호의 인원의 경우, 옆 호수인 a동 b-1호가 이미 a-1동에서 1호부터 b-1호까지의 인원의 합을 가지고 있으므로 a동 b-1호의 인원에 추가로 a-1호의 b동 인원만 더해주면 구할 수 있습니다. 이를 수식으로 나타내면
a[x][y] = a[x][y-1] + a[x-1][y] (x>0 , y>1) 입니다.
y=1인 경우만 예외처리를 해주고 나머지는 모두 구한 다음, 두 수를 입력받아 필요한 인원을 도출하면 되는 문제입니다.
반응형