백준
[백준][Kotlin] 13023번 ABCDE
끝까지 처음처럼
2023. 3. 10. 23:53
728x90
DFS를 이용하여 해당 문제를 작성하였으며, 간단히 문제 설명을 하자면 DFS로 봤을때는 깊이가 5 이상인 node가 존재 유무를 파악 하는 문제였습니다.
하기는 제가 작성한 코드와 제출 결과 입니다.
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
import kotlin.collections.ArrayList
lateinit var visit : BooleanArray
lateinit var friendList : Array<ArrayList<Int>>
var count = 0
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
//var bw = BufferedWriter(OutputStreamWriter(System.out))
var st = StringTokenizer(br.readLine())
val N = st.nextToken().toInt()
val M = st.nextToken().toInt()
friendList = Array(N) { ArrayList<Int>() }
repeat(M){
st = StringTokenizer(br.readLine())
val friend1 = st.nextToken().toInt()
val friend2 = st.nextToken().toInt()
friendList[friend1].add(friend2)
friendList[friend2].add(friend1)
}
visit = BooleanArray(N){true}
for(i in 0 ..visit.size-1){
dfs(i,0)
if(count == 1) break
}
println(count)
//bw.flush()
//bw.close()
}
fun dfs(fri:Int,deep: Int){
visit[fri] = false
if(deep == 4) {
count = 1
return
}
for(i in 0 .. friendList[fri].size-1){
if(visit[ friendList[fri][i] ]){
dfs(friendList[fri][i],deep+1)
}
}
visit[fri] = true
}