[프로그래머스] 네트워크 - JS

잡초·2024년 1월 21일
0
post-thumbnail

문제

풀이

function solution(n, computers) {
    // 방문 여부를 나타내는 배열 초기화
    let visited = Array(n).fill(false);
    // 네트워크의 개수를 저장할 변수 초기화
    let answer = 0;

    // 깊이 우선 탐색(DFS) 함수 정의
    function dfs(i) {
        // 현재 노드를 방문했음을 표시
        visited[i] = true;
        // 현재 노드와 연결된 다른 노드들을 확인
        for (let j = 0; j < computers[i].length; j++) {
            // 현재 노드와 연결되어 있고, 아직 방문하지 않은 노드라면 재귀적으로 방문
            if (computers[i][j] === 1 && !visited[j]) {
                dfs(j);
            }
        }
    }

    // 모든 노드에 대해 방문 여부를 확인하면서 네트워크의 개수 카운트
    for (let i = 0; i < computers.length; i++) {
        // 아직 방문하지 않은 노드라면 해당 노드에서 DFS 수행
        if (!visited[i]) {
            dfs(i);
            // 한 번의 DFS가 끝나면 해당 네트워크 탐색 완료, 네트워크 개수 증가
            answer++;
        }
    }

    // 최종적인 네트워크의 개수 반환
    return answer;
}
profile
개발자가 되고싶은 잡초

0개의 댓글