알고리즘/프로그래머스

[프로그래머스] 2022 KAKAO BLIND RECRUITMENT > 2. k진수에서 소수 개수 구하기

재담 2022. 2. 13. 20:41

문제 원본 : https://programmers.co.kr/learn/courses/30/lessons/92335

 

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

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

programmers.co.kr

public class Solution {
    public int solution(int n, int k) {
        int answer = 0;

        StringBuffer tmp = new StringBuffer();
        while (n != 0) {
            tmp.append(n % k);
            n /= k;
        }

        String rev = tmp.reverse().toString();
        String[] arr = rev.split("0");
        for (String s : arr) {
            if (s.length() == 0) {
                continue;
            }

            if (isPrime(Long.parseLong(s))) {
                ++answer;
            }
        }

        return answer;
    }

    boolean isPrime(long n) {
        if (n == 1L) {
            return false;
        }

        for (long i = 2L; i * i <= n; ++i) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
  • 2022 카카오 블라인드 코딩 테스트 2번
  • 개인적으로 1번보다 더 쉬웠다.
  • 진법 변환 후 0으로 split 후 소수인지 판별