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
}
}