본문 바로가기
Problem Solving

[C++] [백준 2775] 부녀회장이 될테야 (pps 4-4)

by tls1107 2021. 7. 17.
728x90
반응형


문제 풀기 전 생각 : 

/*
먼저 14층까지 각 층마다 14개의 집이 있습니다.
입주 조건에 맞춰 모든 집에 필요한 사람 수를 전부 배열에 저장해두고 
입력되는 숫자에 맞춰 인덱싱해 출력하도록 했다.
*/

#include <iostream>

using namespace std;

int main() { 
  int n[15][15]={ 0, };
  int t,x,y;
  for(int i=0 ; i<15 ; i++){
    n[0][i] = i+1;
  }

  for(int i=1 ; i<15 ; i++){
    for(int j=0 ; j<15 ; j++){
      for(int k=0 ; k<j+1 ; k++){
        n[i][j] += n[i-1][k];
      }
    }
  }
  cin >> t;
  for(int i=0 ; i<t ; i++){
    cin >> x >> y;
    cout << n[x][y-1] << endl;
  }
  return 0; 
}

https://www.acmicpc.net/problem/2775

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

www.acmicpc.net


풀 때 어려웠던 점 또는 느낀점 :

입주 조건을 파악하는 것 말고는 아주 무난한 문제이다.

아니 근데 뭔 입주조건이 되게 이상하다.

흡사 다단계인듯


개선방안 :

#include <cstdio>

int main() {
	int test;
	scanf("%d", &test);
	while (test--) {
		int k, n;
		scanf("%d%d", &k, &n);
		int arr[15][15];
		for (int i = 1; i <= n; i++)
			arr[0][i] = i;
		for (int i = 0; i < k; i++) {
			int sum = 0;
			for (int j = 1; j <= n; j++) {
				sum += arr[i][j];
				arr[i + 1][j] = sum;
			}
		}
		printf("%d\n", arr[k][n]);
	}
	return 0;
}

위의 코드에서 와일문을 다루는 방법이 인상 깊었다

못할것도 없지만 내가 사용하던 방법이 아니어서 새롭게 다가온듯 하다

다음에 써봐야징

문제 접근법 자체는 비슷한듯 하다

728x90
반응형

댓글