## Java 풀이 시 유의사항 ##
클래스명은 Main 으로 작성해야함!
💡 문제

💬 입출력 예시

📌 풀이(소스코드)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
static int[][] dp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
dp = new int[N + 1][K + 1];
System.out.println(BC(N, K));
}
static int BC(int n, int k) {
if (dp[n][k] > 0) {
return dp[n][k];
}
if (k == 0 || n == k) {
return dp[n][k] = 1;
}
return dp[n][k] = BC(n - 1, k - 1) + BC(n - 1, k);
}
}
📄 해설
- 이항계수 알고리즘을 구현하는 문제
다이나믹 프로그래밍(Dynamic Programming, DP)
알고리즘을 사용하여 해결
- 이항 계수 알고리즘에 대한 자세한 설명
작성자의 글(작성중)