본문 바로가기

PS/프로그래머스

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

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

프로그래머스

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

programmers.co.kr

회고:

1. 값이 정수 범위를 넘을 수 있다는 걸 놓쳤다.

2. 에라토스테네스의 체 풀이만 기억하고 루트 n 까지 나누어서 나머지 0을 확인하는 방법을 몰랐다.

 

코드:

class Solution {

    public int solution(int n, int k) {
        int answer = 0;
        String[] split = Integer.toString(n, k).split("0");
        for (String str : split) {
            if (str.length() > 0 && !str.equals("1")) {
                if(isPrime(str)) answer++;
            }
        }
        return answer;
    }

    private boolean isPrime(String str) {
        long val = Long.parseLong(str);
        for (long i = 2; i * i <= val; i++) {
            if(val % i == 0) return false;
        }
        return true;
    }
}