ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][Kotlin] 2023번 신기한 소수
    백준 2023. 3. 10. 21:41
    728x90

    해당 문제는 dfs를 이용하여 작성 할 수 있습니다.

    문제에 대한 설명을 보면 왼쪽부터 1자리, 2자리, 3자리, 4자리 수 모두 소수 라고 말하고 있습니다.

    즉 1의 자리를 제외하고 2,3,5,7 만 10,100,1000,...,10000000 의 자리수에 들어 갈 수 있습니다.

    1의 자리에는 1,3,5,7,9가 들어 갈 수 있습니다.

     

    그렇다면 시작을 2,3,5,7 부터 시작하여 그 뒤에 1,3,5,7,9을 붙이면서 N의 자리수를 가진 숫자를 만들면서 소수인지 체크 하면 해당 문제에 대한 코드를 작성 할 수 있음을 알 수 있습니다.

     

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

     

    import java.io.BufferedReader
    import java.io.BufferedWriter
    import java.io.InputStreamReader
    import java.io.OutputStreamWriter
    import java.util.*
    import kotlin.math.sqrt
    
    var N = 0
    var bw = BufferedWriter(OutputStreamWriter(System.out))
    fun main() {
        //val s = System.currentTimeMillis()
        val br = BufferedReader(InputStreamReader(System.`in`))
    
        var st = StringTokenizer(br.readLine())
        N = st.nextToken().toInt()
        dfs(2,1)
        dfs(3,1)
        dfs(5,1)
        dfs(7,1)
    
        bw.flush()
        bw.close()
    }
    
    fun dfs(num: Int, len:Int){
        if(len == N) {
            if(!check(num)) return
            bw.appendLine("$num")
        }
        for (i in 1..9) {
            if(check(num)){
                dfs((num*10) + i, len + 1)
            }
        }
    
    }
    
    fun check(num: Int):Boolean{
        if(num == 2) return true
        for(i in 2 .. sqrt(num.toDouble()).toInt()+1){
            if(num%i == 0){
                return false
            }
        }
        return true
    }

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

    [백준][Kotlin]1260번 DFS와 BFS  (0) 2023.03.11
    [백준][Kotlin] 13023번 ABCDE  (0) 2023.03.10
    [백준][Kotlin]14502번 연구소  (0) 2023.03.09
    [백준][Kotlin] 11724번 연결 요소의 개수  (0) 2023.03.03
    [백준]1517번 버블 소트  (0) 2023.03.03
Designed by Tistory.