μκ³ λ¦¬μ¦/νκ·Έ λ³ νμ΄
[DFS]μ΅λ μ μ ꡬνκΈ°
choi95
2021. 8. 4. 21:40
λ¬Έμ
μ΄λ² μ 보μ¬λ¦ΌνΌμλ λνμμ μ’μ μ±μ μ λ΄κΈ° μνμ¬ νμλ μ μλμ΄ μ£Όμ 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]]));