diff --git "a/LiiNi-coder/202509/04 BOJ \353\217\231\354\240\2042.md" "b/LiiNi-coder/202509/04 BOJ \353\217\231\354\240\2042.md" new file mode 100644 index 00000000..dabbed96 --- /dev/null +++ "b/LiiNi-coder/202509/04 BOJ \353\217\231\354\240\2042.md" @@ -0,0 +1,41 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.StringTokenizer; + +public class Main { + private static BufferedReader br; + private static StringTokenizer st; + private static int n, k; + private static int[] coins; + private static int[] dp; + + public static void main(String[] args) throws IOException { + br = new BufferedReader(new InputStreamReader(System.in)); + st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + k = Integer.parseInt(st.nextToken()); + coins = new int[n]; + for (int i = 0; i < n; i++) { + coins[i] = Integer.parseInt(br.readLine()); + } + + dp = new int[k + 1]; + Arrays.fill(dp, Integer.MAX_VALUE); + dp[0] = 0; + for (int coin : coins) { + if (coin > k) + continue; + for (int j = coin; j <= k; j++) { + if (dp[j - coin] == Integer.MAX_VALUE) + continue; + dp[j] = Math.min(dp[j], dp[j-coin] + 1); + } + } + + System.out.println((dp[k] == Integer.MAX_VALUE) ? -1 : dp[k]); + } +} +```