ν‹°μŠ€ν† λ¦¬ λ·°

문제

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));
λŒ“κΈ€
곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
TAG
more
Β«   2025/02   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
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
κΈ€ 보관함