본문 바로가기
코딩테스트/프로그래머스

[프로그래머스] 완전탐색 : 소수 찾기 Kotlin

by 일상 속 둔치 2020. 10. 2.

만들 수 있는 숫자를 조합을 사용하여 먼저 구하고

 

해당 조합들이 소수인지 전부 확인해보았다.

 

class Solution {
    lateinit var string: String
    lateinit var check: BooleanArray
    val answerSet = mutableSetOf<Int>()

    fun solution(numbers: String): Int {
        string = numbers
        check = BooleanArray(string.length)
        permutation(0,"")

        return answerSet.size
    }

    fun permutation(depth: Int, makeStr: String){
        if(depth == string.length){
            if(makeStr.equals("")) return
            if(isPrime(makeStr.toInt())){
                answerSet.add(makeStr.toInt())
            }
            return
        }

        for(i in 0..string.length-1){
            if(!check[i]) {
                check[i] = true
                permutation(depth + 1, makeStr + string[i])
                check[i] = false
                permutation(depth + 1, makeStr)
            }
        }
    }

    fun isPrime(number: Int): Boolean{

        for(i in 2..number-2){
            if(number%i == 0){
                return false
            }
        }
        if(number <= 1) return false

        return true
    }
}

댓글