class Solution {
public int solution(int n, int k) {
int answer = 0;
String[] p = Integer.toString(n, k).split("0");
for(String s : p) if(!s.equals("1") && !s.isEmpty()) {
int v = (int) Math.sqrt(Double.parseDouble(s));
boolean vv = true;
for(int i = 2 ; i <= v ; i++) {
if(Double.parseDouble(s) % i == 0){
vv = false;
break;
}
}
if(vv) answer++;
}
return answer;
}
}
맨 마지막의 2문제가 틀렸다고 한다.
문제 지문에
정수 n과 k가 매개변수로 주어집니다. n을 k진수로 바꿨을 때, 변환된 수 안에서 찾을 수 있는 위 조건에 맞는 소수의 개수를 return
소수라고 대놓고 써있는데 소수를 체크하는 로직을 쓰지 않았다.
체크하는 문을 넣으니 바로 통과했다...
밑은 다른 사람의 풀이
class Solution {
public int solution(int n, int k) {
int ans = 0;
String temp[] = Integer.toString(n, k).split("0");
Loop : for(String t : temp) {
if(t.length() == 0) continue;
long a = Long.parseLong(t);
if(a == 1) continue;
for(int i=2; i<=Math.sqrt(a); i++)
if(a%i == 0) continue Loop;
ans++;
}
return ans;
}
}