
내가 작성한 코드
class Solution {
public int solution(int n, int k) {
int answer = 0;
String str = Integer.toString(n, k); // k진수 변환
String[] arr = str.split("0"); // 0로 분리
for (String s : arr) {
if (isPrime(s)) {
answer++;
}
}
return answer;
}
// 소수 판별 메서드
private boolean isPrime(String str) {
// 공백 걸러내기
if (str.length() == 0)
return false;
// Long타입으로 변환 >> k진수 변환시 길이가 길어지는 경우가 있음
Long num = Long.parseLong(str);
// 1은 소수가 아님
if (num == 1)
return false;
// 소수 판별
for (Long i = 2L; i <= Math.sqrt(num); i++) {
if (num % i == 0)
return false;
}
return true;
}
}
다른 사람의 코드
class Solution {
public int solution(int n, int k) {
int ans = 0;
String temp[] = Integer.toString(n, k).split("0"); // k진수 변환 후 0을 기준으로 배열화
Loop: for (String t : temp) {
if (t.length() == 0)
continue; // 0이라면 continue
long a = Long.parseLong(t); // long형으로 변환
if (a == 1)
continue; // 1이라면 continue >> 1은 소수 아님
for (int i = 2; i <= Math.sqrt(a); i++)
if (a % i == 0) // 나눠진 경우 >> 소수가 아닐 때
continue Loop; // Loop 반복문으로 이동
ans++;
}
return ans;
}
}
Share article