[BOJ] 11050번 이항계수 1 - JAVA

최영환·2022년 10월 7일
0

BaekJoon

목록 보기
27/87
post-thumbnail
## 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) {
 
		// 이미 풀었던 sub문제일 경우 값을 재활용
		if (dp[n][k] > 0) {
			return dp[n][k];
		}
 
		// 2번 성질
		if (k == 0 || n == k) {
			return dp[n][k] = 1;
		}
 
		// 1번 성질
		return dp[n][k] = BC(n - 1, k - 1) + BC(n - 1, k);
	}
}

📄 해설

  • 이항계수 알고리즘을 구현하는 문제
  • 다이나믹 프로그래밍(Dynamic Programming, DP) 알고리즘을 사용하여 해결
  • 이항 계수 알고리즘에 대한 자세한 설명
    작성자의 글(작성중)
profile
조금 느릴게요~

0개의 댓글