๐ ์ต๋์ ์ ๊ตฌํ๊ธฐ(๋ ์ ์๊ณ ๋ฆฌ์ฆ)
์ด๋ฒ ์ ๋ณด์ฌ๋ฆผํผ์๋๋ํ์์ ์ข์ ์ฑ์ ์ ๋ด๊ธฐ ์ํ์ฌ ํ์๋ ์ ์๋์ด ์ฃผ์ N๊ฐ์ ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํ๋ค. ๊ฐ ๋ฌธ์ ๋ ๊ทธ๊ฒ์ ํ์์ ๋ ์ป๋ ์ ์์ ํธ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ฃผ์ด์ง๊ฒ ๋๋ค. ์ ํ ์๊ฐ M ์์ N๊ฐ์ ๋ฌธ์ ์ค ์ต๋์ ์๋ฅผ ์ป์ ์ ์๋๋ก ํด์ผ ํ๋ค. (ํด๋น ๋ฌธ์ ๋ ํด๋น ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉด ํธ๋ ๊ฑธ๋ก ๊ฐ์ฃผํ๋ค. ํ ์ ํ๋น ํ ๊ฐ๋ง ํ ์ ์๋ค.)
์ ๋ ฅ์ค๋ช
์ฒซ ๋ฒ์งธ ์ค์ ๋ฌธ์ ์ ๊ฐ์ N(1<=N<=20)๊ณผ ์ ํ ์๊ฐ M(10<=M<=300)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ N์ค์ ๊ฑธ์ณ ๋ฌธ์ ๋ฅผ ํ์์ ๋์ ์ ์์ ํธ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ์ค๋ช
์ฒซ ๋ฒ์งธ ์ค์ ์ ํ ์๊ฐ ์์ ์ป์ ์ ์๋ ์ต๋ ์ ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ ๋ ฅ์์ | ์ถ๋ ฅ์์ |
5 20 10 5 25 12 15 8 6 3 7 4 |
41 |
๐ ํ์ด ๋ฐฉ๋ฒ
๋์ ๊ตํ ๋ฌธ์ ์ ๋งค์ฐ ์ ์ฌํ ๋ฌธ์ ์ด๋ค. ํ์ง๋ง for ๋ฌธ์ ์์์๋ถํฐ ๋๋ฉด ์ค๋ณต ์ ์ฉ์ด ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฒ ๋ฌธ์ ๋ ์ค๋ณต ์ ์ฉ์ด ์๋๋ฏ๋ก ์ด๋ฅผ ํผํ๊ธฐ ์ํด์ j๋ฅผ ๋ค์์๋ถํฐ ๋์์ผ ๋๋ค.
dp[j] - j ์๊ฐ ์์ ์ป์ ์ ์๋ ์ต๋ ์ ์
function solution(m, arr) {
let answer = 0;
let dp = Array.from({ length: m + 1 }, () => 0);
dp[0] = 0;
for (let i = 0; i < arr.length; i++) {
let score = arr[i][0];
let time = arr[i][1];
for (let j = m; j >= time; j--) {
dp[j] = Math.max(dp[j], dp[j - time] + score);
}
}
answer = dp[m];
return answer;
}
let arr = [
[10, 5],
[25, 12],
[15, 8],
[6, 3],
[7, 4],
];
console.log(solution(20, arr));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 10] 04 - ๋์ ๊ตํ (0) | 2022.12.22 |
---|---|
[JavaScript/section 10] 03 - ์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด (0) | 2022.12.21 |
[JavaScript/section 10] 02 - ๋๋ค๋ฆฌ ๊ฑด๋๊ธฐ (0) | 2022.12.19 |
[JavaScript/section 10] 01 - ๊ณ๋จ์ค๋ฅด๊ธฐ (0) | 2022.12.17 |
[JavaScript/section 9] 07 - ์ฌ๋๋ผ ์์ผ๋๋(BFS) (0) | 2022.11.28 |