Daily LeetCode Challenge - 1466. Reorder Routes to Make All Paths Lead to the City Zero

Min Young Kim·2023년 3월 24일
0

algorithm

목록 보기
102/198

Problem From.
https://leetcode.com/problems/reorder-routes-to-make-all-paths-lead-to-the-city-zero/

오늘 문제는 각 도시를 연결한 connections 배열이 주어졌을때, 각 도시에서 0 까지 모두 올 수 있도록 연결을 재배치 하고, 재배치 하는 수를 반환하는 문제였다.

문제는 graph 를 만들어서 BFS 알고리즘을 이용하는 식으로 풀었는데, 처음 0 의 노드에서부터 BFS 로 탐색해 나가면서 연결되어있으면 넘어가고 연결되어있지 않으면 정답에 1을 더해주는 식으로 구현하였다.

class Solution {
    fun minReorder(n: Int, connections: Array<IntArray>): Int {
        var answer = 0
        val graph = Array(n) {mutableListOf<IntArray>()}
        connections.forEach { (a, b) -> 
            graph[a].add(intArrayOf(a, b))
            graph[b].add(intArrayOf(a, b)) 
        }
        val queue: Queue<Int> = LinkedList<Int>()
        val visited = BooleanArray(n)
        queue.offer(0)
        visited[0] = true
        while(queue.isNotEmpty()) {
            val cur = queue.poll()
            graph[cur].forEach { (a, b) ->
                if (!visited[a]) {
                    visited[a] = true
                    queue.offer(a)
                }
                if (!visited[b]) {
                    visited[b] = true
                    queue.offer(b)
                    answer += 1
                }
            }
        }
        return answer
    }
}
profile
길을 찾는 개발자

0개의 댓글