본문 바로가기
코딩테스트 준비(kotlin)/DFS, BFS

[프로그래머스,kotlin] 네트워크

by 1chanhue1 2024. 8. 6.

프로그래머스 네트워크 with kotlin 

 

BFS로 구현 

fun solution(n: Int, computers: Array<IntArray>): Int {

    var answer = 0
    val visited = BooleanArray(n) // 노드 방문 여부 체크 배열

    fun bfs(start: Int) {
        val queue: Queue<Int> = LinkedList()
        queue.add(start)
        visited[start] = true

        while (queue.isNotEmpty()) {
            val node = queue.poll()
            for (i in 0 until n) {
                if (computers[node][i] == 1 && !visited[i]) {
                    queue.add(i)
                    visited[i] = true
                }
            }
        }
    }

    for (i in 0 until n) {
        if (!visited[i]) { // 방문하지 않은 노드가 있으면
            answer++
            // 해당 네트워크의 모든 컴퓨터를 방문 처리 (bfs)
            bfs(i)
        }
    }

    return answer
}