ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][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
    }

     

Designed by Tistory.