Algorithm/programmers

[2022 카카오 블라인드]k진수에서 소수 개수 구하기

마닐라 2022. 5. 3. 13:27

📍 문제 설명

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

 

코딩테스트 연습 - k진수에서 소수 개수 구하기

문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소

programmers.co.kr

 

💡 접근

진수 변환 후 소수 판별하여 answer를 증가시켜주면 되는 문제였다.

String의 범위가 int 범위를 넘을 수 있으니 long으로 받았다.

 

 

👩‍💻 코드

import java.io.*;

public class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        String ans = "";
        while(n > 0) {
            ans = (n % k) + ans;
            n /= k;
        }
        System.out.println(ans);

        String[] arr = ans.split("0");
        for(int i = 0; i < arr.length; i++) {
            if(!arr[i].equals("") && prime(arr[i])) answer++;
        }

        return answer;
    }

    public boolean prime(String s) {
        long n = Long.parseLong(s);
        if(n <= 1) return false;
        else if(n == 2) return true;
        for(int i = 2; i <= Math.sqrt(n); i++) {
            if(n % i == 0) return false;
        }
        return true;
    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        Solution s = new Solution();
        int n = 437674;
        int k = 3;
        s.solution(n, k);
    }
}