알고리즘

프로그래머스 k진수에서 소수 개수 구하기 (JAVA)

박카스마시며코딩 2023. 8. 6. 18:59

https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

저는 구현을 통해 문제를 해결하였습니다. 

k진수로 변경 후 0을 기준으로 문자열을 나누고 각각의 문자열이 소수인지를 확인하였습니다.

 

class Solution {
    public int solution(int n, int k) {
        String s = changeString(n,k);
        int answer = countPrime(s);
        return answer;
    }
    private static String changeString(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 s){
        String[] strArr = s.split("0");
        int result = 0;
        for(String str : strArr){
            if(str.equals("") || str == null){
                continue;
            }
            if(isPrime(Long.parseLong(str))){
                result++;
            }
        }
        return result;
    }
    private static boolean isPrime(long num){
        if(num == 1){
            return false;
        }
        for(int i = 2 ; i <= Math.sqrt(num) ; i++){
            if(num % i == 0){
                return false;
            }
        }
        return true;
    }
}