본문 바로가기

알고리즘

dfs 프로그래머스 네트워크

반응형
//접근 방법 : dfs로 연결이 된 부분(1)을 전부 찾는다.

//컴퓨터와 연결되 있는 네트워크를 찾고 answer에 값을 증가 시킨다.

//이미 연결이 이루어진 곳은 visited의 true를 통해 재 방문 하지 않는다.

fun solution(n: Int, computers: Array<IntArray>): Int {
    var answer = 0
    val visited = BooleanArray(computers.size)

    for (i in computers.indices) {
        if (!visited[i]) {
            answer++
            dfs(i, visited, computers)
        }
    }
    return answer
}

private fun dfs(
        index: Int,
        visited: BooleanArray,
        computers: Array<IntArray>
) {
    visited[index] = true
    for (i in computers.indices) {
        if (!visited[i] && computers[index][i] == 1) {
            dfs(i, visited, computers)
        }
    }
}

 

반응형