[프로그래머스/Javascript] 네트워크

알고리즘

Posted by Kyun2da on July 17, 2020

1️⃣서론

프로그래머스 level3 문제 네트워크입니다. Javascript를 이용하여 해결하였습니다.

2️⃣문제 설명

네트워크1 네트워크2 네트워크3

3️⃣풀이

이 문제는 DFS/BFS를 활용하여 푸는 문제입니다. 네트워크의 개수를 찾는 것인데요. DFS로 노드를 순회하면서 최초의 DFS 노드가 몇번 실행되는지를 찾으면 쉽게 해결할 수 있었습니다. 그럼 소스코드를 보겠습니다.

4️⃣ 내가 푼 소스코드

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
//dfs로 노드를 돌며 방문했다고 표시해준다.
const dfs = (idx, arr, computers) => {
  arr[idx] = true;
  for (let i = 0; i < computers.length; i++) {
    if (computers[idx][i] === 1 && !arr[i]) {
      dfs(i, arr, computers);
    }
  }
};

const solution = (n, computers) => {
  let answer = 0;
  const arr = new Array(n).fill(false);

  //모든 노드를 방문할때까지 dfs를 수행한다.
  while (arr.findIndex((e) => e === false) !== -1) {
    dfs(
      arr.findIndex((e) => e === false),
      arr,
      computers
    );
    answer++;
  }
  return answer;
};

5️⃣ 결론

dfs를 활용하는 문제였습니다. 처음에는 그래프가 있어서 그래프 문제인줄 알았지만 dfs로 방문하면 쉽게 해결할 수 있었습니다.

6️⃣ 마치며..

질문과 지적은 환영합니다. 이 문제는 최적의 정답일 수도 아닐수도 있습니다.
궁금한게 있으시면 아래 댓글 남겨주세요.🙏
댓글은 저에게 큰 힘이 됩니다!
감사합니다. ❤️