ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

์ด๋ฒˆ ์ •๋ณด์˜ฌ๋ฆผํ”ผ์•„๋“œ ๋Œ€ํšŒ์—์„œ ์ข‹์€ ์„ฑ์ ์„ ๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ ํ˜„์ˆ˜๋Š” ์„ ์ƒ๋‹˜์ด ์ฃผ์‹  N๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.๊ฐ ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์„ ํ’€์—ˆ์„ ๋•Œ ์–ป๋Š” ์ ์ˆ˜์™€ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.์ œํ•œ์‹œ๊ฐ„ M์•ˆ์— N๊ฐœ์˜ ๋ฌธ์ œ ์ค‘ ์ตœ๋Œ€์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(ํ•ด๋‹น๋ฌธ์ œ๋Š” ํ•ด๋‹น์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด ํ‘ธ๋Š” ๊ฑธ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค. ํ•œ ์œ ํ˜• ๋‹น ํ•œ ๊ฐœ๋งŒ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

 

๋ฌธ์ œํ’€์ด

DFS ํƒ์ƒ‰

 

์ฝ”๋“œ

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]]));
๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ