어떠한 아파트에 "a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 합만큼 사람들을 데려와야 살아야 하는 규칙"의 아파트가 있다. 예를들어 5층 2호에 살려면 4층 1호~2호의 사람들의 합만큼 살아야한다.
#include <stdio.h>
int main(){
int arr[15][15] = {0,}; // 아파트의 층은 14보다 작거나 같기때문에 각각 15크기의 2중배열을 선언하고 0으로 초기화.
int test,h,w;
for(int i=0; i<15; i++){
arr[0][i] = i; // 문제를 보면 0층의 i호에는 i명만큼 산다고해서 0층에는 i명으로 선언.
}
for(int i=1; i<15; i++){
for(int j=1; j<15; j++){
arr[i][j] = arr[i-1][j] + arr[i][j-1];
} // 문제에서 말한 공식대로 밑에층의 1호부터 해당호까지 사람들의 합을 arr[i][j]에 넣어준다.
}
scanf("%d",&test);
for(int i=0;i<test;i++){
scanf("%d %d", &h, &w);
printf("%d\n", arr[h][w]);
}
return 0;
}
먼저 문제를 풀면서 매번 느끼지만 공식이 바로 떠오르지 않아서 고민끝에 구글링을 해보고 나서 다른 사람들의 코드를 보면 이해하지만 막상 혼자서 하려하면 그 공식이 쉽게 떠오르지 않는다. 어떻게 하면 바로 떠오를까..
참고가 되었습니다. 감사합니다!