뚱땅뚱땅

[문제] 백준 2775번 부녀회장이 될테야 본문

알고리즘/백준

[문제] 백준 2775번 부녀회장이 될테야

양순이 2021. 1. 27. 08:43
728x90

* 출처: 백준 단계별로 풀어보기: 기본 수학1편

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static int flat[][] = new int[15][14];

    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(in.readLine());
        init();
        for (int i = 0; i < T; i++) {
            int k = Integer.parseInt(in.readLine());
            int n = Integer.parseInt(in.readLine());

            System.out.println(flat[k][n-1]);
        }
    }

    public static void init() {
        for(int i=0;i<14;i++) {
            flat[0][i] = i+1; 
        }
        for(int i = 1;i<15;i++) {
            for(int j=0;j<14;j++) {
                people(flat,i,j);
            }
        }
    }

    static void people(int[][] m, int k, int n) {
        if(k==0) return;
        if(n==0) {
            m[k][n] = 1;
            return;
        }
        for(int i=0;i<=n;i++) {
            m[k][n] += m[k-1][i];
        }

    }
}

나는 우선 matrix를 전체 초기화했는데, 굳이 그럴 필요는 없다.
그냥 입력받는대로 계산하면 된다..
f(k,n) = f(k-1,0) + f(k-1, 1) + ... + f(k-1,n) 을 어떻게 해야할지 몰라서 함수를 일단 만들어서 초기화한건데,
f(k-1,0) + f(k-1,1) + ...+ f(k-1,n-1) = f(k, n-1) 이므로
f(k,n) = f(k,n-1)+f(k-1,n) 만 해주면 되는거였다!

728x90
Comments