[BOJ][C++] ๋ฐฑ์ค€ 12865๋ฒˆ: ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ

2025. 5. 19. 02:04ยท๐Ÿ’ญ Problem Solving/C++

๋ฌธ์ œ

https://www.acmicpc.net/problem/12865

 

๋ฌธ์ œ ์ดํ•ด

  • ์ตœ๋Œ€ ๋ฌด๊ฒŒ(K)๊ฐ€ ์ •ํ•ด์ง„ ๋ฐฐ๋‚ญ์— ๋ฌผ๊ฑด์„ ๋„ฃ๋Š”๋‹ค.
  • N๊ฐœ์˜ ๋ฌผ๊ฑด์—๋Š” ๊ฐ๊ฐ ๋ฌด๊ฒŒ(W)์™€ ๊ฐ€์น˜(V)๊ฐ€ ์žˆ๋‹ค.
  • ๋ฐฐ๋‚ญ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ฑด๋“ค์˜ ๊ฐ€์น˜ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

โ” ๋ธŒ๋ฃจํŠธํฌ์Šค

  • ๋ฌผ๊ฑด์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค.
  • N๊ฐœ์˜ ๋ฌผ๊ฑด์— ๋Œ€ํ•ด ๋„ฃ์„์ง€ ๋ง์ง€๋ฅผ ๋ชจ๋‘ ์‹œ๋„ํ•œ๋‹ค.
  • O(2^N)์ด๊ณ , N ≤ 100์ด๋ฏ€๋กœ ์ œํ•œ์‹œ๊ฐ„ ์ดˆ๊ณผ

 

โ” ๋ฐฑํŠธ๋ž˜ํ‚น

  • ๋ฌผ๊ฑด์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•˜๋ฉด์„œ ์ตœ๋Œ€ ๋ฌด๊ฒŒ๋ฅผ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ง€์น˜๊ธฐ๋กœ ์ค„์ธ๋‹ค.
  • ์ตœ์•…์˜ ๊ฒฝ์šฐ๋กœ, ๋ชจ๋“  ์กฐํ•ฉ์ด ์ตœ๋Œ€ ๋ฌด๊ฒŒ๋ฅผ ๋„˜์–ด๊ฐ€์ง€ ์•Š์œผ๋ฉด, ๋ธŒ๋ฃจํŠธํฌ์Šค์™€ ๊ฐ™์•„์ง„๋‹ค.

 

๐Ÿ’ก Dynamic Programming

DP๋ฅผ ํ†ตํ•ด ์ด์ „ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด์„œ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ํ”ผํ•œ๋‹ค.

  • '๋ฐฐ๋‚ญ์˜ ์ตœ๋Œ€ ๋ฌด๊ฒŒ'๋ฅผ ์ธ๋ฑ์Šค๋กœ, ๊ฐ€์น˜ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
  • N๊ฐœ์˜ ๋ฌผ๊ฑด์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ, ํ˜„์žฌ ๋ฌผํ’ˆ์„ ๋ฐฐ๋‚ญ์— ๋„ฃ๋Š” ๊ฒฝ์šฐ, ๋„ฃ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ค‘์— ์ตœ๋Œ“๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
  • ๋ฐฐ๋‚ญ์— ๋„ฃ๋Š” ๊ฒฝ์šฐ: ํ˜„์žฌ ๋ฌผํ’ˆ์˜ ๋ฌด๊ฒŒ๋ฅผ ๋บ์„ ๋•Œ ๊ฐ€์น˜ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’ + ํ˜„์žฌ ๋ฌผํ’ˆ์˜ ๊ฐ€์น˜
    ๋ฐฐ๋‚ญ์— ๋„ฃ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ: ๊ธฐ์กด์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’

 

๐Ÿ’ก DP ์ ํ™”์‹

๊ฐ i๋ฒˆ์งธ ๋ฌผ๊ฑด์— ๋Œ€ํ•ด, ๋ฌด๊ฒŒ j์—์„œ ์ตœ๋Œ€ ๊ฐ€์น˜๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. (๋ฌผ๊ฑด ๋ฒ”์œ„: 0 ~ N / ๋ฌด๊ฒŒ ๋ฒ”์œ„: 0 ~ K)

// j >= item[i].w
dp[i][j] = max(dp[i - 1][j - item[i].w] + item[i].v, dp[i - 1][j])

 

 

ํ•ด๋‹น ๋ฌผํ’ˆ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๊ฐ ๋ฌผํ’ˆ์„ ํ–‰์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์—ญ์ˆœ์œผ๋กœ ์ €์žฅํ•˜๋ฉด 1์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

dp[j] = max(dp[j - item[i].w] + item[i].v, dp[j])

 

 

๐ŸŽ’ ๋ƒ…์ƒ‰ ๋ฌธ์ œ(Knapsack Problem)

  1. 0-1 Knapsack
    • ๊ฐ ๋ฌผ๊ฑด์€ ํ•œ ๋ฒˆ๋งŒ ์„ ํƒ ๊ฐ€๋Šฅ
    • "๋„ฃ๊ฑฐ๋‚˜ ๋ง๊ฑฐ๋‚˜" → ์„ ํƒ์ง€๋Š” 0 ๋˜๋Š” 1
  2. Unbounded Knapsack: ๊ฐ™์€ ๋ฌผ๊ฑด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ (ex. ๋™์ „ ๋ฌธ์ œ)
  3. Fractional Knapsack: ๋ฌผ๊ฑด์„ ์ชผ๊ฐœ์„œ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ

์ด ๋ฌธ์ œ๋Š” 1๋ฒˆ์— ํ•ด๋‹นํ•œ๋‹ค.

 

์ฝ”๋“œ

#include <iostream>
#include <vector>

using namespace std;

struct info {
    int w, v;
};

int knapsack(int n, int k, vector<info> &item) {
    vector<int> dp(k + 1, 0);

    for (int i = 0; i < n; i++) {
        for (int j = k; j >= item[i].w; j--)
            dp[j] = max(dp[j], dp[j - item[i].w] + item[i].v);
    }

    return dp[k];
}

int main() {
    int n, k;
    vector<info> item;

    // ์ž…๋ ฅ
    cin >> n >> k;
    item.assign(n, {0, 0});
    for (int i = 0; i < n; i++)
        cin >> item[i].w >> item[i].v;

    // ์ถœ๋ ฅ
    cout << knapsack(n, k, item);

    return 0;
}

 

'๐Ÿ’ญ Problem Solving > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ][C++] ๋ฐฑ์ค€ 9084๋ฒˆ: ๋™์ „  (0) 2025.05.22
[BOJ][C++] ๋ฐฑ์ค€ 11559๋ฒˆ: Puyo Puyo  (0) 2025.05.18
[BOJ][C++] ๋ฐฑ์ค€ 2606๋ฒˆ: ๋ฐ”์ด๋Ÿฌ์Šค  (0) 2025.05.13
[BOJ][C++] ๋ฐฑ์ค€ 1303๋ฒˆ: ์ „์Ÿ - ์ „ํˆฌ  (0) 2025.04.23
[BOJ][C++] ๋ฐฑ์ค€ 1890๋ฒˆ: ์ ํ”„  (0) 2025.04.23
'๐Ÿ’ญ Problem Solving/C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ][C++] ๋ฐฑ์ค€ 9084๋ฒˆ: ๋™์ „
  • [BOJ][C++] ๋ฐฑ์ค€ 11559๋ฒˆ: Puyo Puyo
  • [BOJ][C++] ๋ฐฑ์ค€ 2606๋ฒˆ: ๋ฐ”์ด๋Ÿฌ์Šค
  • [BOJ][C++] ๋ฐฑ์ค€ 1303๋ฒˆ: ์ „์Ÿ - ์ „ํˆฌ
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (65)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (28)
        • C++ (28)
      • ๐Ÿ“ Study (1)
        • React (1)
      • ๐Ÿ’ป CS (2)
        • ๐Ÿ“˜ Dev Book (2)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐฑํŠธ๋ž˜ํ‚น
    C
    .h
    JavaScript
    knapsack
    HTML
    CS
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    VR
    unity
    makefile
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ์ •๋ ฌ
    ๋งต
    dynamic programming
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    ๋ฐฑ์ค€
    42๊ฒฝ์‚ฐ
    swea
    BFS
    CSS
    dfs
    La Piscine
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    react
    github
    git
    ๊ตฌํ˜„
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[BOJ][C++] ๋ฐฑ์ค€ 12865๋ฒˆ: ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ
์ƒ๋‹จ์œผ๋กœ

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