반응형
문제
설명
DFS나 BFS를 알면 쉽게 풀 수 있는 문제이다.visited를 초기화 할 때, Array.from()을 사용했다.아래와 같은 다른 방식들도 가능하다.
visited = new Array(n).fill(false);
let visited = [];
for(var i =0; i <n; i++) {
visited.push(false);
}
코드
function solution(n, computers) {
let answer = 0;
let visited = Array.from({ length: n }, () => false);
let queue = [];
function bfs(number) {
if (visited[number]) {
return;
}
answer++;
visited[number] = true;
queue.push(number);
while (queue.length) {
node = queue.shift();
visited[node] = true;
for (let i = 0; i < n; i++) {
if (computers[node][i] && !visited[i]) {
queue.push(i);
}
}
}
}
for (let i = 0; i < n; i++) {
bfs(i);
}
return answer;
}