문제의 조건에 따른 집의 거주민 수를 출력한다.
#include <iostream>
using namespace std;
int aprt[15][15]={0}; // 문제에서 아파트의 범위를 14x14로 제한했음
// 모든 호에 사는 사람을 구해놓고 입력 받음
int main()
{
for(int j=0;j<15;j++) // 0층에 있는 사람 구함
{
aprt[0][j]=j+1;
}
for(int a=1;a<15;a++) // 1층부터 14층까지
{
for(int b=0;b<15;b++) // 0호부터 14호까지
{
for(int c=0;c<=b;c++) // 어느 호에 몇 명이 사는지 계산
{
aprt[a][b]+=aprt[a-1][c];
}
}
}
int t;
cin>>t;
for(int i=0;i<t;i++)
{
int k,n;
cin >> k;
cin >> n;
cout << aprt[k][n-1]<<"\n"; // 출력
}
}
문제에 나와있는
이 두 규칙이 핵심이다.
케이스가 주어질 때마다 몇 층 몇 호에 몇 명이 사는지를 계산하는 것보다, 아파트 전체에서 몇 층 몇 호에 몇 명이 사는지를 다 구해놓고 케이스를 입력받아 출력하는 게 낫다고 생각했다.
for(int a=1;a<15;a++) // 1층부터 14층까지
{
for(int b=0;b<15;b++) // 0호부터 14호까지
{
for(int c=0;c<=b;c++) // 어느 호에 몇 명이 사는지 계산
{
aprt[a][b]+=aprt[a-1][c];
}
}
}
3중 for문을 써 몇 층 몇 호에 몇 명이 사는지를 구했다.
출력시 "aprt[k][n]"가 아닌 "aprt[k][n-1]"를 출력해야 한다.