ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][Kotlin]15649번 N과 M (1)
    백준 2023. 4. 5. 15:54
    728x90

    해당문제는 알고리즘 백트래킹으로 분류되어 있습니다.

    백트래킹을 간단히 설명하자면 정답를 찾는중에 정답이 아니라면, 되돌아가서 다시 정답를 찾아가는 기법을 말합니다.

    15649번 N과 M (1) 문제는 dfs를 이용하여 쉽게 구현 및 작성 할 수 있는 문제였습니다.

     

     하기는 제가 작성한 코드와 제출 결과 입니다.

     

    import java.io.BufferedReader
    import java.io.BufferedWriter
    import java.io.InputStreamReader
    import java.io.OutputStreamWriter
    import java.util.*
    
    lateinit var visit : BooleanArray
    lateinit var bw : BufferedWriter
    var N = 0
    var M = 0
    
    fun main() {
        val br = BufferedReader(InputStreamReader(System.`in`))
        bw = BufferedWriter(OutputStreamWriter(System.out))
        var st = StringTokenizer(br.readLine())
    
        N = st.nextToken().toInt()
        M = st.nextToken().toInt()
    
        visit = BooleanArray(N+1)
    
        for(i in 1 .. N){
            visit[i] = true
            dfs(i.toString(),1)
            visit[i] = false
        }
    
        bw.flush()
        bw.close()
    }
    
    fun dfs(num: String,count: Int){
        if(count == M){
            bw.appendLine(num)
            return
        }
    
        for(i in 1 .. N){
            if(visit[i])continue
            visit[i] = true
            dfs("$num $i",count+1)
            visit[i] = false
        }
    
    }

    '백준' 카테고리의 다른 글

    [백준][Kotlin]2559번 수열  (0) 2023.04.10
    [백준][Kotlin]15650번 N과 M (2)  (0) 2023.04.05
    [백준][Kotlin] 1987번 알파벳  (0) 2023.04.05
    [백준][Kotlin]2251번 물통  (0) 2023.04.01
    [백준][Kotlin]1707번 이분 그래프  (0) 2023.03.31
Designed by Tistory.