네트워크 (프로그래머스)

Namlulu·2022년 2월 14일
0

알고리즘

목록 보기
28/28
function solution(n, computers) {
  var answer = 0;

  let visited = Array(n).fill(0);
  let stack = [];

  for (let i = 0; i < n; i++) {
    // 최초 방문 시
    if (visited[i] === 0) {
      stack.push(i);
      visited[i] = 1;

      // DFS
      while (stack.length > 0) {
        let c = stack.pop();

        // 경로 연결 되어 있으면서 최초 방문일 경우
        for (let j in computers[c]) {
          if (computers[c][j] == 1 && visited[j] == 0) {
            stack.push(j);
            visited[j] = 1;
          }
        }
      }

      // 최초 방문이 일어날 때마다 집합이 생김
      answer++;
    }
  }
  return answer;
}

=> 아오, 최단 거리 구하는 문제가 아니라 방문 여부만 따져보면 되는데 진짜 완전 삽질했다. 그래도 하나 배운게, 최초 방문할 때마다 집합 개념이 발생한다고 보면 된다.

profile
Better then yesterday

0개의 댓글