import kotlin.math.sqrt
fun solution(numbers: String): Int {
// 주어진 문자열의 모든 가능한 순열을 생성하는 함수
fun generatePermutations(chars: List<Char>): Set<Int> {
val results = mutableSetOf<Int>()
fun permute(prefix: String, remaining: String) {
if (prefix.isNotEmpty()) {
results.add(prefix.toInt())
}
for (i in remaining.indices) {
permute(prefix + remaining[i], remaining.substring(0, i) + remaining.substring(i + 1))
}
}
permute("", chars.joinToString(""))
return results
}
// 소수 판별 함수
fun isPrime(num: Int): Boolean {
if (num < 2) return false
for (i in 2..sqrt(num.toDouble()).toInt()) {
if (num % i == 0) return false
}
return true
}
// 문자열을 리스트로 변환하여 모든 가능한 순열 생성
val chars = numbers.toList()
val permutations = generatePermutations(chars)
// 생성된 숫자 중 소수를 찾아서 카운트
val primeCount = permutations.count { isPrime(it) }
return primeCount
}
'코딩테스트 준비(kotlin) > 완전탐색' 카테고리의 다른 글
[프로그래머스] 카펫 (kotlin) (0) | 2024.06.11 |
---|