ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BaekJoon] 12865๋ฒˆ : ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ
    SW Test/BaekJoon 2021. 4. 20. 02:07
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ c++๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋ฌธ์ œ

     

    ์˜ˆ์‹œ

     

    ํ’€์ด

    • ์ด ๋ฌธ์ œ๋ฅผ ๊ทธ๋ฆฌ๋””๋ผ๊ณ  ์˜คํ•ดํ•˜์—ฌ ์ค‘๋Ÿ‰ ๋Œ€๋น„ ๊ฐ€์น˜๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฒฝ์šฐ๋ฅผ ๋„ฃ๋Š”๋‹ค๊ณ  ํ•  ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    • ๊ทธ๋ฆฌ๋””๊ฐ€ ์•„๋‹Œ DP๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋ฉด DP๋กœ ์œ ๋ช…ํ•œ 0-1 knapsack ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.
    • D[i][w] : ํ˜„์žฌ w ๋ฌด๊ฒŒ๊ฐ€ ๋‚จ์€ ์ƒํƒœ์—์„œ i๋ฒˆ์งธ item์„ ํƒ๊นŒ์ง€ ์ตœ๋Œ€ ๊ฐ€์น˜
    • if w[i] < w, D[i][w] = max(D[i-1][w-w[i]]+v[i], D[i-1][w]) : i๋ฒˆ์งธ Item์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด, i-1๋ฒˆ์งธ๊นŒ์ง€ Item์„ ๋‹ด์œผ๋ฉด์„œ ํ˜„์žฌ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๊ฐ€ w-w[i]๋งŒํผ ๋‚จ์€ ๊ฒฝ์›…์˜ ์ตœ๋Œ€ ๊ฐ€์น˜ํ•ฉ์— i๋ฒˆ์งธ Item์˜ ๊ฐ€์น˜๋ฅผ ํ•ฉํ•œ ๊ฐ’๊ณผ D[i-1][w] ๊ฐ’ ๋น„๊ต
    • else, D[i][w] = D[i-1][w]
    #include<iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
    
    int main(){
        int n,m;
        cin>>n>>m;
        
        int arr[105][100005] = {0};
        int w[105]={0};
        int v[105]={0};
    
        for(int i=1;i<=n;i++){
            cin>>w[i]>>v[i];
        }
        
        w[1] == 1?arr[1][1] = v[1] : arr[1][1] = 0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(w[i]<=j){
                    arr[i][j] = max(arr[i-1][j-w[i]] + v[i], arr[i-1][j]);
                }else{
                    arr[i][j] = arr[i-1][j];
                }
            }
        }
        cout<<arr[n][m];
    }
    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.