레벨 2
https://programmers.co.kr/learn/courses/30/lessons/92335
이 문제에서 놓친 것은 10진수를 k진수로 바꿀 때 n의 최대가 1,000,000이므로 엄청나게 길어질 것으로 예상되어 Long으로 바꿔주었다 (안바꾸면 테케 1,11 오류남)
K진수로 바꾸는 방법 두가지 있다.
2번째 방법을 사용했지만 변환함수가 있는지 오늘 알았다. 앞으로 이거 적극 사용해서 코드 줄이기!
Integer.toString(n,k)
String numK ="";
while(n!=0){
numK+=String.valueOf(n%k);
n=n/k;
}
numK = sb.append(numK).reverse().toString();
import java.util.*;
class Solution {
public int solution(int n, int k) {
StringBuilder sb = new StringBuilder();
int answer = 0;
String numK ="";
while(n!=0){
numK+=String.valueOf(n%k);
n=n/k;
}
numK = sb.append(numK).reverse().toString();
System.out.println(numK);
numK = numK.replaceAll("[0]{2,}","0");
String[] num = numK.split("0");
for(int i=0;i<num.length;i++){
// if(!num[i].equals("")){
if(isPrime(Long.parseLong(num[i]))){
answer++;
}
//}
System.out.println(i+" "+num[i]);
}
return answer;
}
public boolean isPrime(Long n){
if (n ==1 || n==0){
return false;
}
for(int i=2;i<=Math.sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
}