BOJ 2293: 동전 1 https://www.acmicpc.net/problem/2293
DP
를 사용한다.DP[i] = DP[i] + DP[i - (동전 값)]
DP[i] = DP[i] + DP[i - (동전 값)]
만 해주면 중복된 값이 더해진다.중복
된다.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));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] dp = new int[k + 1];
dp[0] = 1;
int[] coins = new int[n + 1]; // 동전 종류 저장할 배열
for (int i = 1; i <= n; i++) {
// 동전 종류 저장
coins[i] = Integer.parseInt(br.readLine());
// 현재 동전 값부터 목표 값 까지만 -> 중복 제거 가능
for (int j = coins[i]; j <= k; j++) {
dp[j] += dp[j - coins[i]];
}
}
System.out.println(dp[k]);
}
}