알고리즘
프로그래머스 k진수에서 소수 개수 구하기(JAVA)
박카스마시며코딩
2022. 2. 21. 16:38
https://programmers.co.kr/learn/courses/30/lessons/92335
코딩테스트 연습 - k진수에서 소수 개수 구하기
문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소
programmers.co.kr
저는 먼저 수를 k진수의 String 값으로 변경하였습니다.
(k진수로 변환은 수를 계속 k로 모듈러연산을 하고 이 값을 reverse하였습니다.)
이 결과값(String)을 0 을 기준으로 나누고 각각의 값이 소수인지를 판별하여 문제를 풀었습니다.
package Programmers.KAKAO_2022;
import java.util.*;
class Solution {
private static String numberToK(int n , int k){
StringBuilder sb = new StringBuilder();
while(n > 0){
sb.append(n%k);
n /= k;
}
sb = sb.reverse();
return sb.toString();
}
private static int countPrime(String number){
int result = 0;
String[] temps = number.split("0");
for(String temp : temps){
// System.out.println(temp);
if(!"".equals(temp) && !" ".equals(temp) && isPrime(temp)){
result++;
}
}
return result;
}
private static boolean isPrime(String number){
long num = Long.parseLong(number);
if(num == 1){
return false;
}
for(long i = 2 ; i <= Math.sqrt(num) ; i++){
if(num % i == 0){
return false;
}
}
return true;
}
public int solution(int n, int k) {
int answer = -1;
String number = numberToK(n,k);
answer = countPrime(number);
return answer;
}
}