728x90
λ°μν
π 09 - λμ κ΅ν(DFS)
μ¬λ¬ λ¨μμ λμ λ€μ΄ μ£Όμ΄μ Έ μμλ κ±°μ€λ¦λμ κ°μ₯ μ μ μμ λμ μΌλ‘ κ΅νν΄μ£Όλ €κ³ νλ€. μ΄λ λμ μ μ΅μ κ°μλ₯Ό μΆλ ₯νλ λ¬Έμ μ΄λ€. κ° λ¨μμ λμ μ 무νμ μΈ μ μλ€.
μ
λ ₯μμ
1 2 5
15
μΆλ ₯μμ
3
μ€λͺ
: 5 5 5 λμ 3κ°λ‘ κ±°μ¬λ¬ μ€ μ μλ€.
π νμ΄ λ°©λ²
μ€λ³΅μμ΄ κ΅¬νκΈ° λ¬Έμ λ₯Ό λ¨Όμ μ΄ν΄νκ³ μ¨λ€λ©΄ μ΄λ ΅μ§ μκ² μ΄λ² λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ κ²μ΄λ€. λ¨, μ΄λ²μλ ν¨μλ₯Ό μ’ λ£μμΌμΌ νλ μμ μ μ μκ°ν΄λ΄μΌ νλ€. λΆνμν νμκΉμ§ ν νμκ° μκΈ° λλ¬Έμ΄λ€.
- λμ μ μ΅μ κ°μλ₯Ό ꡬνλ λ¬Έμ μ΄λ―λ‘ answer(κ·Έ μμ μ λμ μ μ΅μ κ°μ)λ³΄λ€ L(λ 벨, λμ μ κ°μ)μ΄ ν¬κ±°λ κ°λ€λ©΄ λ μ΄μ κΉμ΄ νμν νμ μμ΄ return νλ€.
- sum(λμ μ ν©)μ΄ m(κ±°μ€λ¦λ)μ μ΄κ³Όνλ€λ©΄ return νλ€.
function solution(m, arr) {
let answer = Number.MAX_SAFE_INTEGER;
let n = arr.length;
let arrCopy = Array.from(arr).sort((a, b) => b - a);
function DFS(L, sum) {
if (answer <= L) return;
if (sum > m) return;
if (sum === m) {
answer = Math.min(answer, L);
return;
} else {
for (let i = 0; i < n; i++) {
DFS(L + 1, sum + arrCopy[i]);
}
}
}
DFS(0, 0);
return answer;
}
let arr = [1, 2];
console.log(solution(4, arr));
'Algorithm > μΈνλ°(inflearn)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript/section 8] 11 - ν©ν λ¦¬μΌ (0) | 2022.11.07 |
---|---|
[JavaScript/section 8] 10 - μμ΄ κ΅¬νκΈ° (0) | 2022.11.06 |
[JavaScript/section 8] 08 - μ€λ³΅μμ΄ κ΅¬νκΈ° (0) | 2022.10.30 |
[JavaScript/section 8] 07 - μ΅λμ μ ꡬνκΈ° (0) | 2022.10.26 |
[JavaScript/section 8] 06 - λ°λμ΄ μΉμ°¨ (0) | 2022.10.25 |