본문 바로가기
코딩테스트 준비(kotlin)/완전탐색

[프로그래머스,kotlin] 소수 찾기

by 1chanhue1 2024. 7. 12.

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