๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section08 - 6 - ๋ฐ”๋‘‘์ด ์Šน์ฐจ(DFS)

by YWTechIT 2021. 9. 17.
728x90

๐Ÿ“ section08 - 6 - ๋ฐ”๋‘‘์ด ์Šน์ฐจ(DFS)

๋ฌธ์ œ: ์ฒ ์ˆ˜๋Š” C๋ฅผ ๋„˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ทธ์˜ ๋ฐ”๋‘‘์ด๋“ค์„ ๊ฐ€์žฅ ๋ฌด๊ฒ๊ฒŒ ํƒœ์šฐ๊ณ  ์‹ถ๋‹ค๊ณ  ํ•œ๋‹ค. N๋งˆ๋ฆฌ์˜ ๋ฐ”๋‘‘์ด์™€ ๊ฐ ๋ฐ”๋‘‘์ด์˜ ๋ฌด๊ฒŒ W๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ์ฒ ์ˆ˜๊ฐ€ ํŠธ๋Ÿญ์— ํƒœ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ๋ฌด๊ฒŒ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

 

  1. ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ์ด์šฉํ•œ ๋ฌธ์ œ๋‹ค.
  2. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๊ตฌํ•œ ํ›„ weight๋ณด๋‹ค ์ž‘์€ ๊ฐ’ ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ‘ผ๋‹ค.
  3. 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;
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€