ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
์ด๋ฒ ์ ๋ณด์ฌ๋ฆผํผ์๋ ๋ํ์์ ์ข์ ์ฑ์ ์ ๋ด๊ธฐ ์ํ์ฌ ํ์๋ ์ ์๋์ด ์ฃผ์ N๊ฐ์ ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํฉ๋๋ค.๊ฐ ๋ฌธ์ ๋ ๊ทธ๊ฒ์ ํ์์ ๋ ์ป๋ ์ ์์ ํธ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ฃผ์ด์ง๊ฒ ๋ฉ๋๋ค.์ ํ์๊ฐ M์์ N๊ฐ์ ๋ฌธ์ ์ค ์ต๋์ ์๋ฅผ ์ป์ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.(ํด๋น๋ฌธ์ ๋ ํด๋น์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉด ํธ๋ ๊ฑธ๋ก ๊ฐ์ฃผํ๋ค. ํ ์ ํ ๋น ํ ๊ฐ๋ง ํ ์ ์์ต๋๋ค)
๋ฌธ์ ํ์ด
์ฝ๋
function solution(limit, arr) {
let answer = Number.MIN_SAFE_INTEGER;
let n = arr.length;
function DFS(level, time, sum) {
if(level === n) {
if(time > limit) return; //์ ํ ์๊ฐ์ ์ด๊ณผํ์ ๊ฒฝ์ฐ
answer = Math.max(answer, sum)
}
else {
DFS(level + 1, time + arr[level][1], sum + arr[level][0]); //๋ฌธ์ ๋ฅผ ํ ๊ฒฝ์ฐ์๋ ์ ์๋ฅผ ํ๋ํ์ง๋ง ์๊ฐ ๋ํ ์ถ์ ๋จ
DFS(level + 1, time, sum); //๋ฌธ์ ๋ฅผ ํ์ง ์๋ ๊ฒฝ์ฐ์๋ ์ ์๋ฅผ ํ๋ํ์ง ๋ชปํ์ง๋ง ์๊ฐ์ ์ธ์ด๋ธํ ์ ์์
}
}
DFS(0, 0, 0);
return answer;
}
console.log(solution(20, [[10,5], [25, 12], [15, 8], [6, 3], [7, 4]]));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DFS-Cut Edge]๋์ ๊ตํ (0) | 2021.08.06 |
---|---|
[๋ค์ค for๋ฌธ๊ณผ ์ฌ๊ท์ ์ฐจ์ด]์ค๋ณต์์ด ๊ตฌํ๊ธฐ (0) | 2021.08.06 |
[DFS]ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ (0) | 2021.07.30 |
[DFS]๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ (0) | 2021.07.30 |
[DFS]์ด์งํธ๋ฆฌ ์ํ (0) | 2021.07.28 |
๋๊ธ