ํฐ์คํ ๋ฆฌ ๋ทฐ

๋ฌธ์ ๊ฐ ์ดํด๊ฐ ์๋ผ์ ํ 5๋ฒ์ ๋ ์ฝ์
๊ทธ๋๊น ๋์ถฉ... ์ดํด๊ฐ ๋์!!
์ผ๋จ ๋ฌผ๊ฑด์๋ ๊ฐ๊ฐ์ ๊ฐ์น๊ฐ ๋ถ์ฌ๊ฐ ๋๊ณ ๊ทธ ๊ฐ์น๋ฅผ ์ต๋ํ์ผ๋ก ํ๋ฉด์ ๋ฐฐ๋ญ์ ๋ฌผ๊ฑด์ ์ง์ด๋ฃ์ด์ผ ํจ
๊ทธ๋ ์ง๋ง ๋ฐฐ๋ญ์๋ ๋ฌด๊ฒ ์ ํ์ด ์์... ๋ฌผ๋ก ๊ฐ๊ฐ ๋ฌผ๊ฑด์๋ ๋ฌด๊ฒ๊ฐ ์ฃผ์ด์ง
[ํ์ด]
๊ทธ๋ฌ๋๊น 1 ~ n ๊ฐ์ ๋ฌผ๊ฑด์ ํ์ ํ๋ฉด์ ์ต๋ํ ๊ฐ์น๊ฐ ๋์์ผ ํจ ๊ทผ๋ฐ ๋ ๋ฌด๊ฒ๊ฐ ์ด๊ณผ๊ฐ ๋๋ฉด ์๋จ
Knapsack ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ํ ์ ์๋ ๋ฌธ์ ์
๋จผ์ ์ฃผ์ด์ง ๋ฌผ๊ฑด๋ค์ ์ฐจ๋ก๋ก w[i], v[i] ๋ฐฐ์ด์ ์ง์ด๋ฃ์
w[i] : i๋ฒ์งธ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ
v[i] : i๋ฒ์งธ ๋ฌผ๊ฑด์ ๊ฐ์น
๊ทธ๋ฆฌ๊ณ 2์ฐจ์ ๋ฐฐ์ด ์์ฑ
arr[i][j] : ๋ฌผ๊ฑด์ ๊ฐ์๋งํผ i ์กด์ฌ, ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๋ ์ต๋ ๋ฌด๊ฒ๋งํผ j ์กด์ฌ
arr[i][j] = max(arr[i - 1][j], arr[i - 1][j - w[i]] + v[i]);
๊ทธ๊ฑธ๋ก ์ด๋ ๊ฒ ์์ฑ์ ํ ์๊ฐ ์์


์ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ๋ฐฐ์ด์ ์์ฑํด ๋ณด์์
i๊ฐ 1์ผ๋ j๊ฐ 6์ด ๋ ๋ ์ ์ฝ๋๊ฐ ์คํ์ด ๋จ (j >= w[i])
๊ทธ๋๋ก ๊ฐ์น๊ฐ 13์ด ๋ค์ด๊ฐ๊ฒ ๋จ
๊ทธ๋ฆฌ๊ณ j๊ฐ 7์ด ๋์ด๋ 13์ด ๋ค์ด๊ฐ
์ด์ ๋ค์์ i๊ฐ 2๊ฐ ๋์์ ๋ j๊ฐ 4์ผ๋ ์ฝ๋๊ฐ ์คํ์ด ๋จ, ๊ทธ๋๋ก ๊ฐ์น๊ฐ 8์ด ๋ค์ด๊ฐ
๊ทผ๋ฐ j๊ฐ 6์ด ๋์์ ๋๋ 13์ด 8๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ arr[2][6]์๋ arr[2-1][6]์ธ 13์ด ๋ค์ด๊ฐ๊ฒ ๋จ
i๊ฐ 3์ด ๋์์ ๋ 6์ด ๋ค์ด๊ฐ๋ค๊ฐ 8์ด ๋ค์ด๊ฐ๊ฒ ๋๊ณ , 13์ด ๋ค์ด๊ฐ๊ฒ ๋๋๋ฐ
arr[3][7]์์ arr[3 - 1][7 - 3] ํด์ arr[2][4]๊ฐ ๋์ค๊ฒ ๋๋๋ฐ ์ฌ๊ธฐ ์์ ์์ ๊ฐ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ v[3]๊ณผ ๋ํด์ ธ 14๋ผ๋ ๊ฐ์ด ๋์ค๊ฒ ๋จ 13๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ 14๊ฐ ๋ค์ด๊ฐ
i๊ฐ 4๊ฐ ๋์์ ๋ 12๊ฐ ๋ค์ด๊ฐ๊ณ 13์ด ๋ค์ด๊ฐ๊ฒ ๋์ง๋ง ๊ฒฐ๊ตญ 14๊ฐ ๊ฐ์ฅ ํฐ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ arr[4][7]์ ์ ์ฅ๋๊ณ arr[n][k]๋ฅผ ์ถ๋ ฅํ์ ๋ 14๋ผ๋ ๊ฐ์น ์ต๋๊ฐ์ด ๋์ค๊ฒ ๋จ
[์ ์ฒด์ฝ๋]
// 12865_ํ๋ฒํ ๋ฐฐ๋ญ
#include<iostream>
using namespace std;
int n, k; // n : ๋ฌผํ์ ์ / k = ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ
int arr[101][100001];
int w[101]; // ๋ฌผ๊ฑด์ ๋ฌด๊ฒ
int v[101]; // ๋ฌผ๊ฑด์ ๊ฐ์น
int main() {
cin >> n >> k; // ๋ฌผํ์์ ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ ์
๋ ฅ๋ฐ์
for(int i = 1; i <= n; i++){ // ๋ฌด๊ฒ์ ๊ฐ์น๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์ด์ ์ ์ฅ
cin >> w[i] >> v[i];
}
for(int i = 1; i <= n; i++){ // 1 - n ๊ฐ
for(int j = 0; j <= k; j++){ // 0 - k kg
if(j >= w[i]) // j๊ฐ ๋ฌด๊ฒ๋ณด๋ค ํด ๋
// ๋ฐฐ์ด์ ๊ทธ ์ i๋ฒ์งธ ๋ฐฐ์ด, j์์ ๋ฌด๊ฒ๋ฅผ ๋บ์ ๋ ๊ทธ ๋ฐฐ์ด ์์๊ฐ ์กด์ฌํ๋ค๋ฉด ํ์ฌ ๊ฐ์น๋ฅผ ๋ํจ
// ๋ ์ค์ ๋ ํฐ ๊ฒ์ ํ์ฌ ๋ฐฐ์ด์ ๋ฃ์
arr[i][j] = max(arr[i - 1][j], arr[i - 1][j - w[i]] + v[i]);
else
// j๊ฐ ๋ฌด๊ฒ๋ณด๋ค ํฌ์ง ์๋ค๋ฉด ๊ทธ ์ ๋ฐฐ์ด ์์๋ฅผ ๋ฃ์
arr[i][j] = arr[i - 1][j];
}
}
// ์ด์ค for ๋ฌธ์ด ๋๋๋ฉด ๋งจ ๋ง์ง๋ง ๋ฐฐ์ด์ ์ถ๋ ฅ
cout << arr[n][k];
}

'๐ STUDY > ๐ baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [baekjoon] 17608๋ฒ : ๋ง๋๊ธฐ (C++) (2) | 2021.09.07 |
|---|---|
| [baekjoon] 12605๋ฒ : ๋จ์ด์์ ๋ค์ง๊ธฐ (C++) (0) | 2021.09.07 |
| [baekjoon] 1158๋ฒ : ์์ธํธ์ค ๋ฌธ์ (C++) (0) | 2021.09.07 |
| [baekjoon] 11279๋ฒ : ์ต๋ ํ (C++) (0) | 2021.09.07 |
| [baekjoon] 1655๋ฒ : ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ (C++) (0) | 2021.09.05 |
- Programming
- 9086๋ฒ
- bitnami
- C
- Baekjoon
- ์ค์น
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฒํผ
- ๋จธ์ ๋ฌ๋
- ๋ฆฌ๋ ์ค
- PHP
- GIT
- machine learning
- error
- SWiFT
- MySQL
- ํ๋ก๊ทธ๋๋ฐ
- C++
- ์ค๋ฅ
- react
- Annotation
- ๊ธฐ๊ณํ์ต
- react-scripts
- ํ์ผ ์ ์ถ๋ ฅ
- ๋ค์คํ๋ก์ธ์ค
- ํ๋ก์ธ์ค
- Linux
- SpringBoot
- Apache
- ๋ฐฑ์ค
- Total
- Today
- Yesterday