문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin
문제
나의 풀이
이 문제는 순열을 이용해야 한다. 다만 numbers에 있는 정수는 한번만 쓰여져야 함으로 add한 뒤에는 substring으로 제거해줬다. 문자가 0으로 시작하는것을 방지하고 중복을 허용하지 않기 위해 Mutableset을 Int로 만들고 순열이 완료가 되면 만들어진 set에 있는 숫자가 소수인지 판별하고 그 숫자를 출력해 주었다.
class Solution {
var count = 0
var size = 0
var answer = mutableSetOf<Int>()
fun permutation(next : String, numbers: String){
if(next != "") answer.add(next.toInt())
for (i in numbers.indices) {
permutation(next.plus(numbers[i]), numbers.substring(0, i) + numbers.substring(i+1))
}
}
fun isPrime(n: Int): Boolean = n > 1 && (2 until n).none { n % it == 0 }
fun solution(numbers: String): Int {
permutation("", numbers)
answer.map{ if(isPrime(it)) count++ }
return count
}
}