Blog

백준 2775: 부녀회장이 될테야, 아래층 인원 더하기

백준 2775번 부녀회장이 될테야는 각 호의 인원을 아래층의 인원으로 계산하는 문제입니다.

0층을 먼저 채웁니다

0층의 i호에는 i명이 살고 있습니다. 다른 층의 계산 기준이 되어서 0층은 배열에 1부터 n까지 직접 넣습니다.

1층부터는 바로 아래층의 1호부터 현재 호수까지 인원을 더합니다. 아래 코드에서는 층, 호수, 더할 아래층의 호수를 세 개의 반복문으로 순회했습니다.

배열 높이는 입력받은 층에 1을 더해 정했습니다. 0층도 저장해야 하기 때문입니다. 호수는 배열에서 0부터 시작하므로 원하는 결과는 arr[k-1][n-1]에 있습니다.

제출 코드

Java
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {

            int k = Integer.parseInt(br.readLine()) + 1;
            int n = Integer.parseInt(br.readLine());

            int[][] arr = new int[k][n];

            // n 호수 까지 맨 처음 0층은 i호에 i명이 살고있음
            for (int j = 0; j < n; j++) {
                arr[0][j] = j+1;
            }
            // 1층 부터 계산 시작
            // j층 l호
            for (int j = 1; j < k; j++) {
                for (int l = 0; l < n; l++) {
                    for (int m = 0; m <= l; m++) {
                        arr[j][l] += arr[j - 1][m];
                    }
                }
            }
            bw.write(String.valueOf(arr[k-1][n-1] + "\n"));
        }
        bw.flush();
    }
}