프로그래머스
[프로그래머스][Kotlin] 네트워크
끝까지 처음처럼
2023. 2. 1. 16:25
728x90
import java.util.*
class Solution {
private var nodeList = mutableListOf<MutableList<Int>>()
private var visited = mutableListOf<Boolean>()
private var answer = 0
fun solution(n: Int, computers: Array<IntArray>): Int {
nodeList.add(mutableListOf<Int>())
visited.add(true)
for(i in 0 .. n-1){
var tempList = mutableListOf<Int>()
for(j in 0 .. n-1){
if(i == j) {
tempList.add(0)
} else {
if(computers[i][j] != 0){
tempList.add(j+1)
} else {
tempList.add(0)
}
}
}
nodeList.add(tempList)
visited.add(true)
}
for(i in 1 .. n){
if(visited[i]){
dfs(i)
answer++
}
}
return answer
}
private fun dfs(i : Int){
visited[i] = false
for(j in 0 .. nodeList[i].size-1){
if(nodeList[i][j] != 0 && visited[nodeList[i][j]]){
dfs(nodeList[i][j])
}
}
}
}
알고리즘을 공부하던중 DFS를 공부하며 작성한 문제입니다.
해당문제는 DFS를 알고 있다면 어렵지 않게 풀 수 있는 문제지만, 아직 DFS 및 BFS를 확실히 다루지 못하여 추가적으로 공부를 해야될 필요성을 느꼈습니다.
아래는 실행결과 입니다.
테스트 1 〉 | 통과 (0.07ms, 59.4MB) |
테스트 2 〉 | 통과 (0.08ms, 59.7MB) |
테스트 3 〉 | 통과 (0.26ms, 59.9MB) |
테스트 4 〉 | 통과 (0.15ms, 61MB) |
테스트 5 〉 | 통과 (0.04ms, 62.2MB) |
테스트 6 〉 | 통과 (1.04ms, 60.7MB) |
테스트 7 〉 | 통과 (0.12ms, 60.6MB) |
테스트 8 〉 | 통과 (0.63ms, 60.6MB) |
테스트 9 〉 | 통과 (0.55ms, 61.3MB) |
테스트 10 〉 | 통과 (0.54ms, 59.7MB) |
테스트 11 〉 | 통과 (2.25ms, 62.8MB) |
테스트 12 〉 | 통과 (1.63ms, 61.5MB) |
테스트 13 〉 | 통과 (0.92ms, 61MB) |