백준 2775번 - 부녀회장이 될테야 c언어

김대일·2021년 5월 7일
0

어떠한 아파트에 "a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 합만큼 사람들을 데려와야 살아야 하는 규칙"의 아파트가 있다. 예를들어 5층 2호에 살려면 4층 1호~2호의 사람들의 합만큼 살아야한다.

접근 방법

  • 아파트에 비어있는 집은 없다
  • 아파트는 0층부터 있으며 각층에는 1호부터있다.
  • 0층의 i호에는 i명이 산다.
  • 아파트의 층과 호수는 14와 같거나 작다. ( 아파트의 층과 호수에 관한 배열을 각각 15로 만들어준다)
#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; 
}

느낀점

먼저 문제를 풀면서 매번 느끼지만 공식이 바로 떠오르지 않아서 고민끝에 구글링을 해보고 나서 다른 사람들의 코드를 보면 이해하지만 막상 혼자서 하려하면 그 공식이 쉽게 떠오르지 않는다. 어떻게 하면 바로 떠오를까..

profile
도비코딩

1개의 댓글

comment-user-thumbnail
2021년 8월 25일

참고가 되었습니다. 감사합니다!

답글 달기

관련 채용 정보