๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€

๋ฐฑ์ค€ 2294: ๋™์ „2(Java)

2025. 6. 2. 21:33ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ’ก ๋ฌธ์ œ ์š”์•ฝ

  • n๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ๋™์ „์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
  • ๊ฐ๊ฐ์˜ ๋™์ „์€ ์ค‘๋ณตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ์ด ๋™์ „๋“ค์„ ์ด์šฉํ•ด ์ดํ•ฉ์ด k์›์ด ๋˜๋„๋ก ํ•  ๋•Œ,
  • ํ•„์š”ํ•œ ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ผ
  • ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ -1์„ ์ถœ๋ ฅํ•˜๋ผ

๐Ÿง  ๋ฌธ์ œ ๋ถ„์„

  • ์ „ํ˜•์ ์ธ ๋™์ „ ์ตœ์†Œ ๊ฐœ์ˆ˜ DP ๋ฌธ์ œ
  • ์ ํ™”์‹ ๊ธฐ๋ฐ˜์œผ๋กœ 1์ฐจ์› DP ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ’€์ด

๐Ÿ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

1๏ธโƒฃ DP ๋ฐฐ์—ด ์ •์˜

  • dp[j] = j์›์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๋™์ „ ๊ฐœ์ˆ˜
  • ์ดˆ๊ธฐ๊ฐ’: dp[0] = 0, ๋‚˜๋จธ์ง€๋Š” INF (ํฐ ๊ฐ’)

2๏ธโƒฃ ์ ํ™”์‹

  • ๊ฐ ๋™์ „ ๊ธˆ์•ก c์— ๋Œ€ํ•ด
    dp[j] = min(dp[j], dp[j - c] + 1)

3๏ธโƒฃ ์ตœ์ข… ์ •๋‹ต

  • dp[k]๊ฐ€ INF์ด๋ฉด ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ธˆ์•ก โ†’ -1 ์ถœ๋ ฅ
  • ์•„๋‹ˆ๋ฉด dp[k] ์ถœ๋ ฅ

โœ… ์ฝ”๋“œ ๊ตฌํ˜„ (Java)

import java.io.*;
import java.util.*;

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[] coin = new int[n];
        for (int i = 0; i < n; i++) {
            coin[i] = Integer.parseInt(br.readLine());
        }


        int INF = k + 1;
        int[] dp = new int[k + 1];
        Arrays.fill(dp, INF);
        dp[0] = 0;

        for (int i = 0; i < n; i++) {
            int c = coin[i];
            for (int j = c; j <= k; j++) {
                dp[j] = Math.min(dp[j], dp[j - c] + 1);
            }
        }

        System.out.println(dp[k] > k ? -1 : dp[k]);
    }
}

โฑ๏ธ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • O(N ร— K)
  • N: ๋™์ „ ์ข…๋ฅ˜ ์ˆ˜ (์ตœ๋Œ€ 100), K: ๊ธˆ์•ก (์ตœ๋Œ€ 10,000)
  • 10^6 ์ด๋‚ด์ด๋ฏ€๋กœ ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅ

๐Ÿ“Œ ์ •๋ฆฌ

  • ๊ฐ ๊ธˆ์•ก๋งˆ๋‹ค ์ตœ์†Œ ๋™์ „ ๊ฐœ์ˆ˜๋ฅผ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ
  • ๋ชจ๋“  ๋™์ „์œผ๋กœ K๊นŒ์ง€ ๋ˆ„์  ๊ณ„์‚ฐํ•˜์—ฌ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹
  • 2์ค‘ for๋ฌธ์ด์ง€๋งŒ ๋‚ด๋ถ€ ์—ฐ์‚ฐ์ด ๋งค์šฐ ์ž‘๊ณ  ๋น ๋ฆ„

'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฐฑ์ค€ 2248 - ์ด์ง„์ˆ˜ ์ฐพ๊ธฐ(Java)  (1) 2025.06.07
๋ฐฑ์ค€ 10800๋ฒˆ: ์ปฌ๋Ÿฌ๋ณผ (Java)  (1) 2025.06.04
๋ฐฑ์ค€ 1167: ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„(Java)  (0) 2025.05.26
๋ฐฑ์ค€ 1976: ์—ฌํ–‰ ๊ณ„ํš(Java)  (0) 2025.05.24
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค PCCP๋ชจ์˜๊ณ ์‚ฌ#1 4๋ฒˆ๋ฌธ์ œ  (0) 2025.05.14
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 2248 - ์ด์ง„์ˆ˜ ์ฐพ๊ธฐ(Java)
  • ๋ฐฑ์ค€ 10800๋ฒˆ: ์ปฌ๋Ÿฌ๋ณผ (Java)
  • ๋ฐฑ์ค€ 1167: ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„(Java)
  • ๋ฐฑ์ค€ 1976: ์—ฌํ–‰ ๊ณ„ํš(Java)
quokkaST
quokkaST
  • quokkaST
    stquokka
    quokkaST
    • ๊ฐœ๋ฐœ์ž (77)
      • n8n (2)
      • CS๊ณต๋ถ€ (46)
        • Java & Spring (15)
        • ์ธํ”„๋ผ (7)
        • ์šด์˜์ฒด์ œ & ์‹œ์Šคํ…œ (9)
        • ๊ธฐํƒ€ CS์ง€์‹ (7)
        • ๋„คํŠธ์›Œํฌ (6)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (16)
      • ํ”„๋กœ์ ํŠธ (8)
        • ๊ฐ์ •&๊ธˆ์œต์ฑ—๋ด‡ (8)
      • ๋ฆฌํŒฉํ† ๋ง (5)
        • horong (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”