[Programmers] 네트워크


  • 프로그래머스 네트워크 문제 풀이입니다.

const dfs = (startNode, computers, visited) => {
  //
  visited.push(startNode);
  for (let j = 0; j < computers[startNode].length; j++) {
    // 서로 네트워크 연결되어 있는 경우
    if (
      startNode !== j &&
      computers[startNode][j] === 1 &&
      !visited.includes(j)
    ) {
      dfs(j, computers, visited);
    }
  }
};

function solution(n, computers) {
  let result = [];
  for (let i = 0; i < n; i++) {
    let visited = []; // 방문한 node를 넣는 배열
    dfs(i, computers, visited);
    result.push(visited);
  }

  const sortedResult = result.map((item) => item.sort().join("")); // 각 배열의 원소를 string으로 변경
  const answer = new Set(sortedResult).size; // set으로 만들어서 중복된 것 제거
  return answer;
}

Reference









© 2020. by dkmqflx

Powered by dkmqflx