본문 바로가기

백준

[백준] 2225 합분해 [자바]

 

 


https://hongjw1938.tistory.com/63

 

알고리즘 풀이 - 백준 2225(합분해, DP)

관련글 Dynamic Programming 관련 포스팅은 여기를 참조 1. 개요 문제 링크는 여기를 참조 문제의 내용을 보려면 아래 더보기 클릭 더보기 이 문제는 N, K가 주어질 때, N까지의 정수 K개를 더해서 그 합

hongjw1938.tistory.com

 

※. dp[N][K] (정수 k개를 더해서 N을 만듦)

 

※. 마지막에 더하는 숫자가 k 일 때 N을 만드는 경우의 수는 dp[N][k포함] = dp[N-k][이전횟수(-1)]

 


 

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

public class Main {
	static long mod = 1_000_000_000;
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		long[][] dp = new long[N+1][K+1];
		for(int i = 0; i <= N; i++) {
			dp[i][1] = 1;
		}
		
		for(int i = 2; i <= K; i++) {
			for(int j = 0; j <= N; j++) {
				for(int k = 0; k <= j; k++) { //k를 더해서 j 만듦
					dp[j][i] += dp[j-k][i-1];
					dp[j][i] %= mod;
				}
			}
		}
		System.out.println(dp[N][K]);
	}
}

'백준' 카테고리의 다른 글

[백준] 13172 Σ [자바]  (0) 2023.03.09
[백준] 15663 N과 M(9) [자바]  (0) 2023.03.04
[백준] 26607 시로코와 은행털기 [자바]  (0) 2023.01.29
[백준] 1238 파티 [자바]  (0) 2023.01.18
[백준] 10830 행렬 제곱 [자바]  (0) 2023.01.16