[μΈμ 리μ€νΈ]κ²½λ‘ νμ
λ¬Έμ
https://choi95.tistory.com/124
[μΈμ νλ ¬]κ²½λ‘ νμ
λ¬Έμ λ¬Έμ νμ΄ μΈμ νλ ¬ μΈμ νλ ¬μ κ·Έλνμ μ°κ²° κ΄κ³λ₯Ό μ΄μ°¨μ λ°°μ΄λ‘ λνλ΄λ λ°©μ arr[i][j]: λ Έλ i(ν)μμ j(μ΄)λ‘ κ°λ κ°μ μ΄ μμΌλ©΄ 1, μλλ©΄ 0_λ¨λ°©ν₯κ·Έλνμ κ²½μ° μΈμ νλ ¬μ νΉμ±
choi95.tistory.com
λ¬Έμ νμ΄
μ΄μ κ²½λ‘ νμμ ꡬνλ κ³Όμ μμ μΈμ νλ ¬μ μ¬μ©νμ¬ μ μ μΌλ‘ κ°λ κ°μ§ μλ₯Ό ꡬνμλ€.
νμ§λ§ κ° μ μ μ λν΄μ λ€μ μ μ μΌλ‘ κ° μ μλ ν보ꡰμ ν(νμ¬ μ μ )κ³Ό μ΄(λ€μ μ μ )μ μ μ₯νλ€λ©΄ νμ κ³Όμ μμλΆνμν μΈλ±μ€ μμκΉμ§ μΌμΌν νμΈνλ©΄μ μνν΄μΌ λλ λ¬Έμ κ° λ°μνλ€.
νμ¬λ μ΄(λ€μ μ μ )μ μκ° μ μ΄ ν¬κ² μκ΄μ μμΌλ νλ³΄κ΅°μ΄ λ¬΄μν λ§μ§λ§ κ·Έ μ€ μ€μ κ° μ μλ κ²½λ‘μ μκ° κ·Ήμμμ΄λ€λ©΄λͺ¨λ κ²½λ‘λ₯Ό κ° μ μλμ§ μννλ κ²μ μκ°λ³΅μ‘λ μ λ§€μ° λΉν¨μ¨μ μ΄λ€.
μΈμ 리μ€νΈ
- nκ°μ μ μ μ κ°κ°μ λν΄ μΈμ ν μ μ λ€μ 리μ€νΈλ‘ λ§λλ κ²
- μ°κ²° κ°λ₯ν λͺ¨λ κ²½μ°μ μλ₯Ό μ μ₯ν΄μ 보μ¬μ£Όλ μΈμ νλ ¬κ³Όλ λ€λ₯΄κ² μ°κ²°λμ΄ μλ κ²½μ°μλ§ μ μ₯_λ©λͺ¨λ¦¬λ₯Ό λ μ¬μ©
μ½λ
function solution(n, arr) {
let answer = 0;
let graph = Array.from(Array(n + 1), () => Array()); //κ° μ μ μ΄ μ°κ²°λμ΄ μλ μ μ μ μμ΄νκΈ° λλ¬Έμ 2μ°¨μ λ°°μ΄μ λΉ κ³΅λ°±μΌλ‘
let ch = Array.from({length: n + 1}, () => 0);
for(let [a, b] of arr) {
graph[a].push(b); //μ°κ²°λμ΄ μλ μ μ μ μ 보λ₯Ό μ§μ μ μ₯
}
function DFS(v) {
if(v === n) answer++;
else {
for(let i = 0; i < graph[v].length; i++) { //μ°κ²°λμ΄ μλ μ μ μ κ°―μλ§νΌλ§ μν
if(ch[graph[v][i]] === 0) {
ch[graph[v][i]] = 1;
DFS(graph[v][i]);
ch[graph[v][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));