## 🌟 문제 [코딩테스트 연습 - 네트워크 \| 프로그래머스 스쿨](https://school.programmers.co.kr/learn/courses/30/lessons/43162) 컴퓨터들이 연결되어 있는 것을 네트워크라고 한다. 어떤 컴퓨터 둘이 인접한 다른 컴퓨터들을 통해서 연결되어 있는 경우에 같은 네트워크 상에 있다고 한다. 컴퓨터의 개수와 연결에 대한 정보가 주어졌을 때, 네트워크의 개수를 구하는 문제. ## 🌟 풀이 BFS를 느끼자... 이번 네트워크나 [백준의 토마토](https://www.acmicpc.net/problem/7576) 문제처럼 어떤 지점을 기준으로 연결된 점을 통해서 영역을 넓혀가는 느낌은 bfs를 먼저 떠올리면 된다. 이 문제 역시 어떤 컴퓨터를 기준으로 인접한 컴퓨터들을 타고 타고 가서 연결될 수 있는 가장 넓은 영역을 구하는 작업이 필요하고, 이건 bfs를 이용하면 간단히 해결할 수 있다. 그리고 그 영역들의 개수를 구해야 하므로 영역에 포함된 컴퓨터들을 방문 표시해두면서 새로운 영역들을 계속 찾아가면 (bfs를 수행) 답을 구할 수 있다. > 이게 왜 Level 3 문제일까... 인접행렬이 주어져서 그런가? ## 🌟 코드 ```javascript function solution(n, computers) { let answer = 0; const visited = new Uint8Array(n); function bfs(start) { const queue = [start]; let head = 0; visited[start] = 1; while (head < queue.length) { const cur = queue[head++]; for (let next = 0; next < n; next++) { if (computers[cur][next] === 0) continue; if (visited[next]) continue; visited[next] = 1; queue.push(next); } } } for (let start = 0; start < n; start++) { // 이미 어떤 네트워크에 속해 있는 경우는 제외한다. if (visited[start]) continue; bfs(start); answer++; // bfs 1번 = 네트워크 하나. } return answer; } ```