class Solution {
//n을 k진법으로 나타낸 문자열 반환
//String객체를 매번 생성하는 것이 아니라 StringBuilder객체를 한번만 생성!!
public String conv(int n, int k) {
StringBuilder sb = new StringBuilder();
while (n > 0) {
sb.append(n % k);
n = (int) Math.floor(n / k);
}
return sb.reverse().toString();
}
//소수인지 판별
public boolean isPrime(long x) {
if (x == 1) {
return false;
}
for (int i = 2; i < (int) (Math.sqrt(x)) + 1; i++) {
if (x % i == 0) {
return false;
}
}
return true;
}
//0을 기준으로 split한 다음 소수판별검사 후 소수의 count
//다만 소수판별검사시 String타입을 int타입이 아닌 long타입으로 바뀌준다.
public int solution(int n, int k) {
String s = conv(n, k);
int cnt = 0;
String[] split = s.split("0");
for (int i = 0; i < split.length; i++) {
if (split[i].equals("")) {
continue;
} else if (isPrime(Long.parseLong(split[i]))) {
cnt += 1;
}
}
return cnt;
}
}