문제
양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다.
- 0P0처럼 소수 양쪽에 0이 있는 경우
- P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우
- 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우
- P처럼 소수 양쪽에 아무것도 없는 경우
- 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다.
예를 들어, 101은 P가 될 수 없습니다.
풀이
K 진수로 변환 후 0을 기준으로 나누면 P만 남는다.
소수인 P의 개수만 구하면 되는 문제
코드
class Solution {
fun solution(n: Int, k: Int): Int {
var answer: Int = 0
var _k = n.toString(k)
_k.split("0").forEach{
if(it.isNotBlank() && isPrime(it.toLong())) answer++
}
return answer
}
fun isPrime(num: Long): Boolean{
if(num<=1) return false
for(i in 2 ..Math.sqrt(num.toDouble()).toLong()){
if(num%i==0L) return false
}
return true
}
}
'코딩 테스트 > Lv.2' 카테고리의 다른 글
[프로그래머스] 요격 시스템 with Kotlin (0) | 2024.04.04 |
---|---|
[프로그래머스] JadenCase 문자열 만들기 with Kotlin (0) | 2024.03.05 |
[프로그래머스] 괄호 회전하기 with Kotlin (0) | 2023.11.07 |
[프로그래머스] 귤 고르기 with Kotlin (0) | 2023.11.07 |
[프로그래머스] N개의 최소공배수 with Kotlin (0) | 2023.11.07 |