728x90
λ°μν
π 01 - κ²½λ‘ νμ(DFS-μΈμ νλ ¬: λ Έλ κ°μκ° μ μ λ)
λ°©ν₯ κ·Έλνκ° μ£Όμ΄μ§λ©΄ 1λ² μ μ μμ Nλ² μ μ μΌλ‘ κ°λ λͺ¨λ κ²½λ‘μ κ°μ§ μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμΈμ. μλ κ·Έλνμμ 1λ² μ μ μμ 5λ² μ μ μΌλ‘ κ°λ κ°μ§ μλ μ΄ 6κ°μ§ μ λλ€.
λ€μκ³Ό κ°μ΄ λ°©ν₯ κ·Έλνκ° μ£Όμ΄μ§λ©΄ μΈμ νλ ¬λ‘ ννν μ μμ΄μΌ νλ€.
v μ μ (ν)μμ i μ μ (μ΄)μΌλ‘ κ°λ κ²½λ‘κ° μ‘΄μ¬νλ€λ©΄ 1, μ‘΄μ¬νμ§ μμΌλ©΄ 0μΌλ‘ νμνλ€.
π νμ΄ λ°©λ²
v - νμ¬ μ μ , i - λ§μ§λ§μΌλ‘ λλ¬ν΄μΌνλ μ μ
ch - ν΄λΉ μ μ μ μ§λ¬λμ§ μ²΄ν¬νλ λ°°μ΄
- μ¬κ·λ₯Ό λλ©΄μ graph[v][i]λ 1μ΄κ³ ch[i]λ 0μ΄λΌλ©΄ v μ μ μμ i μ μ μΌλ‘ μ΄λν μ μλ€λ κ²μ΄λ―λ‘ ν΄λΉ μ μ μΌλ‘ μ΄λνμμ λνλ΄κΈ° μν΄ ch[i]λ₯Ό 1λ‘ μ¬ν λΉνλ€.
- DFS(i) ν¨μλ₯Ό νΈμΆνκ³ μ’ λ£κ° λλ©΄ λ€μμ ν΄λΉ μ μ μΌλ‘ μ΄λν μ μλλ‘ ch[i]λ₯Ό 0μΌλ‘ λ€μ μ¬ν λΉνλ€. (λ°±νΈλνΉ)
- vμ nμ΄ κ°λ€λ©΄ νλμ κ²½μ°κ° λ§λ€μ΄μ§ κ²μ΄λ―λ‘ answerμ 1μ λν΄μ€λ€.
μ£Όμν μ β 1λ² μ μ μμ μμνλ―λ‘ ch λ°°μ΄μ 1λ² μΈλ±μ€λ₯Ό 1λ‘ μ΄κΈ°νν λ€μ μ¬κ·λ₯Ό μμν΄μΌ νλ€.
function solution(n, arr) {
let answer = 0;
let graph = Array.from(Array(n + 1), () => Array(n + 1).fill(0));
let ch = Array.from({ length: n + 1 }, () => 0);
for (let [a, b] of arr) {
graph[a][b] = 1;
}
function DFS(v) {
if (v === n) {
answer++;
} else {
for (let i = 1; i <= n; i++) {
if (graph[v][i] === 1 && ch[i] === 0) {
ch[i] = 1;
DFS(i);
ch[i] = 0;
}
}
}
}
// μ€μ λ§μ΄ νλ λΆλΆβ
ch[1] = 1;
DFS(1);
return answer;
}
let arr = [
[1, 2],
[1, 3],
[1, 4],
[2, 1],
[2, 3],
[2, 5],
[3, 4],
[4, 2],
[4, 5],
];
console.log(solution(5, arr));
'Algorithm > μΈνλ°(inflearn)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JavaScript/section 9] 03 - λ―Έλ‘ νμ (0) | 2022.11.20 |
---|---|
[JavaScript/section 9] 02 - κ²½λ‘ νμ(μΈμ 리μ€νΈ) (0) | 2022.11.16 |
[JavaScript/section 8] 15 - μλ€μ μ‘°ν© (0) | 2022.11.14 |
[JavaScript/section 8] 14 - μ‘°ν© κ΅¬νκΈ° (0) | 2022.11.12 |
[JavaScript/section 8] 13 - μμ΄ μΆμΈ‘νκΈ° (0) | 2022.11.10 |