728x90
๐ section08 - 6 - ๋ฐ๋์ด ์น์ฐจ(DFS)
๋ฌธ์ : ์ฒ ์๋ C
๋ฅผ ๋์ง ์์ผ๋ฉด์ ๊ทธ์ ๋ฐ๋์ด๋ค์ ๊ฐ์ฅ ๋ฌด๊ฒ๊ฒ ํ์ฐ๊ณ ์ถ๋ค๊ณ ํ๋ค. N
๋ง๋ฆฌ์ ๋ฐ๋์ด์ ๊ฐ ๋ฐ๋์ด์ ๋ฌด๊ฒ W
๊ฐ ์ฃผ์ด์ง๋ฉด, ์ฒ ์๊ฐ ํธ๋ญ์ ํ์ธ ์ ์๋ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋ฌด๊ฒ๋ ๋ฌด์์ผ๊น์?
- ๋ถ๋ถ์งํฉ์ ์ด์ฉํ ๋ฌธ์ ๋ค.
- ์ฃผ์ด์ง ๋ฐฐ์ด์์ ๋ถ๋ถ์งํฉ์ ๊ตฌํ ํ
weight
๋ณด๋ค ์์ ๊ฐ ์ค ์ต๋๊ฐ์ ๊ฐฑ์ ์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก ํผ๋ค. DFS
์ ์ธ์๋ฅผ 2๊ฐ๋ก ์ค์ ํ ๋ค์weight
๊ฐ์ ๋์ ์ํค๊ฑฐ๋ ๋์ ์ํค์ง ์๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
728x90
let weight = 259;
let n = 5;
let arr = [81, 58, 42, 33, 61];
console.log(solution(weight, n, arr));
function solution(weight, n, arr){
let answer = Number.MIN_SAFE_INTEGER;
arr.sort((a,b)=>b-a);
function DFS(L, sum){
if (sum > weight) return;
if (L === n){
answer = Math.max(answer, sum)
}else{
DFS(L+1, sum+arr[L]);
DFS(L+1, sum);
}
}
DFS(0, 0);
return answer;
}
๋ฐ์ํ
๋๊ธ