Files
Coding-Practice/programmers/k진수에서 소수 개수 구하기/solution.java
T
2023-01-04 20:56:15 +09:00

50 lines
1.5 KiB
Java

// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/92335
import java.lang.StringBuilder;
class Solution {
private String trans(int n, int k){
StringBuilder sb = new StringBuilder();
while(n>k){
sb.append(n%k);
n = n/k;
}
sb.append(n);
return sb.reverse().toString();
}
private boolean isPrime(Double i){
int temp = 0;
//System.out.println(i+"가 들어왔다 체크하자.");
for(Double a = 1D; a <= Math.sqrt(i); a++){
if(i%a==0) temp++;
if(temp>1) break;
}
return (i!=1&&temp==1);
}
private int chkPrm(String s){
int temp, ans = 0;
StringBuilder sb = new StringBuilder();
for(char a : s.toCharArray()){
temp = Character.getNumericValue(a);
if(temp != 0) sb.append(temp);
else {
if(sb.length()>0 && isPrime(Double.parseDouble(sb.toString()))) ans++;
//System.out.println(sb);
sb.setLength(0);
}
}
if(sb.length()!=0){
if(sb.length()>0 && isPrime(Double.parseDouble(sb.toString()))) ans++;
//System.out.println(sb);
sb.setLength(0);
}
return ans;
}
public int solution(int n, int k) {
int answer = -1;
String t = trans(n,k);
//System.out.println(t);
return chkPrm(t);
}
}