알고리즘

백준 2775번 부녀회장이 될테야

박카스마시며코딩 2022. 10. 24. 21:19

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

 

package BOJ.dp;

import java.awt.image.BufferedImageFilter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.function.Function;

public class BOJ_2775 {
    private static final int SIZE = 14;
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Function<String,Integer> stoi = Integer::parseInt;
        int testCnt = stoi.apply(br.readLine());
        int[][] dp = new int[SIZE+1][SIZE+1];
        for(int t = 0 ; t < testCnt ; t++){
            int k = stoi.apply(br.readLine());
            int n = stoi.apply(br.readLine());
            System.out.println(cal(k,n,dp));
        }
    }

    private static final int NOT_VALID = 0;
    private static int cal(int k, int n,int[][] dp) {
        if(dp[k][n] != NOT_VALID){
            return dp[k][n];
        }
        if(k == 0){
            return n;
        }
        int result = 0;
        for(int i = 1 ; i <= n ; i++ ){
            result += cal(k-1,i,dp);
        }
        return dp[k][n] = result;
    }
}