[프로그래머스 | javascript] 네트워크(dfs) : 재귀함수 사용

728x90
반응형

*문제 : computers=[[1, 1, 0], [1, 1, 0], [0, 0, 1]]  / n =3

 

1. 포인트는 해당 인덱스를 방문했는지 여부 => visited

2. 방문하지 않았으면 dfs 함수 실행 => dfs(i)

3. dfs(i) 실행 후 해당 인덱스는 visited[i] = true로 변경

4. 2차원배열의 값이 1 && 방문하지 않았다면 => dfs(i) 실행

 

 

 

(1) 내 풀이

function solution(n, computers) {
  let answer = 0;
  let visited = new Array(n).fill(false)
  
  const dfs =(start)=>{
      visited[start] =true;
      
      for(let i = 0; i<n; i++){
          if(computers[start][i] ===1 && !visited[i]){
              dfs(i);
          }
      }
  }
  
  for(let i = 0; i<n;i++){
      if(!visited[i]){
          dfs(i)
          answer ++
      }
  }
    return answer
  
}

 

 

끝.

반응형