1. 문제 풀이 아이디어
- 숫자를
k
진수의 문자열로 바꾼 후,0
을 기준으로 나누어 소수를 판별하면 문제를 해결할 수 있다.
2. 나의 정답 코드
class Solution {
public int solution(int n, int k) {
int answer = 0;
String[] split = Integer.toString(n, k).split("0");
for (String s : split) {
if (s.isEmpty())
continue;
long l = Long.parseLong(s);
if (isPrime(l))
answer++;
}
return answer;
}
private boolean isPrime(long n) {
if (n == 1)
return false;
for (long l = 2; l * l <= n; l++) {
if (n % l == 0)
return false;
}
return true;
}
}
3. 정리
Integer.toString
메서드를 사용하여k
진수의 문자열로 바꾼 후,“0”
을 기준으로 문자열을 나누어split
배열에 저장한다.
split
배열을 순회하여 문자열이 비지 않은 경우,long
으로 변환한 후isPrime
메서드를 사용하여 소수를 판별한다.
- 소수일 경우
answer
를1
씩 증가시켜 문제를 해결한다.
Share article