๊ธฐ๋ก๋ฐฉ

BOJ_2293 : ๋™์ „ 1 ๋ณธ๋ฌธ

CodingTest/Java

BOJ_2293 : ๋™์ „ 1

Soom_1n 2023. 4. 12. 17:51

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

2293๋ฒˆ: ๋™์ „ 1

์ฒซ์งธ ์ค„์— n, k๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) ๋‹ค์Œ n๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ๊ฐ์˜ ๋™์ „์˜ ๊ฐ€์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋™์ „์˜ ๊ฐ€์น˜๋Š” 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net



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

  • n๊ฐ€์ง€ ๋™์ „์œผ๋กœ k์›์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๋™์ „์„ ๋ฌดํ•œ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉด ์ „ํ˜•์ ์ธ DP๋ฌธ์ œ๋กœ, dp[i] ๋Š” i์›์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜์ด๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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

public class Main {
    public static void main(String[] args) throws IOException {
        // Input
        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[] coins = new int[n];

        for (int i = 0; i < n; i++) {
            coins[i] = Integer.parseInt(br.readLine());
        }

        // DP
        int[] dp = new int[k+1];
        dp[0] = 1;
        for (int i = 0; i < n; i++) {
            for (int j = coins[i]; j <= k; j++) {
                dp[j] += dp[j-coins[i]];
            }
        }
        // Output
        System.out.print(dp[k]);
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • dp๋Š” dp[i]๋Š” i์›์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด์ด๋‹ค.
  • dp[0]์€ ์•„๋ฌด ๋™์ „๋„ ์•ˆ๋‚ด๋Š” ๊ฒฝ์šฐ(๊ณต์ง‘ํ•ฉ)๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ 1์ด๋‹ค.
    • ์‚ฌ์‹ค n์˜ ์ตœ์†Œ๊ฐ’์ด 1์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ต์œผ๋กœ ์“ฐ์ด์ง„ ์•Š์ง€๋งŒ, ์ ํ™”์‹ ์ฐธ์กฐ์— ํ•„์š”ํ•ด์„œ 1์„ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.
  • n๊ฐ€์ง€ ์ฝ”์ธ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋Š” 0์„ ์ œ์™ธํ•˜๊ณ  ์ตœ์†Œ coins[0]์ด๋ฏ€๋กœ, coins[i] ~ k ๊นŒ์ง€ ๊ฐ’์„ ๋ˆ„์ ํ•œ๋‹ค.
    • ํ•ด๋‹น ๋™์ „์„ ๋บ์„ ๋•Œ์˜ ์ตœ์ ๊ฐ’์„ ํ˜„์žฌ ๊ฐ’์— ๋”ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ ํ™”์‹์„ ๋งŒ๋“ค๊ธฐ ์–ด๋ ค์›Œ์„œ ๊ณ ๋ฏผํ•˜๋‹ค ์ ํ™”์‹๋งŒ ์ฐธ๊ณ ํ•˜๊ณ  ํ’€์—ˆ๋‹ค.
  • DP์˜ ์ ํ™”์‹ ์ถ”์ถœ์„ ๋” ์—ฐ์Šตํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

728x90