https://www.acmicpc.net/problem/2293
문제
풀이
동전의 배열을 coins[] 라고 하고 , 만들고 있는 갯수의 합의 결과를 dp[] 라고 하면
dp[k] 를 만들기위해 이전의 결과값을 더해줘야 한다.
기준을 conis[] 로 해서 반복문을 돌리면 coins[1] 일때 1~k원 까지 모두 체크 , coins[2] 일때 1~k원 가지 모두 체크 ..
이런식으로 해서 coins[n] 일때 모두 체크해서 기존의 dp 배열에 계속해서 추가해주면 된다.
점화식은 다음과 같다 => dp[i] +=dp[i-coin];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int n = Integer.parseInt(input[0]);
int k = Integer.parseInt(input[1]);
int[] coins = new int[n];
int[] dp = new int[k+1];
for(int i=0;i<n;i++) {
coins[i] = Integer.parseInt(br.readLine());
}
dp[0]=1;
for (int coin : coins) {
for(int i=1;i<=k;i++)
if(i-coin >= 0)
dp[i] +=dp[i-coin];
}
System.out.println(dp[k]);
}
}
|
cs |
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [11722] 가장 긴 감소하는 부분수열 JAVA (0) | 2021.09.23 |
---|---|
[BOJ] 백준 [12865] 평범한 배낭 JAVA (0) | 2021.09.22 |
[BOJ] 백준 [11057] 오르막 수 JAVA (0) | 2021.09.18 |
[BOJ] 백준 [1932] 정수 삼각형 JAVA (0) | 2021.09.17 |
[BOJ] 백준 [1149] RGB거리 JAVA (0) | 2021.09.16 |