2022 KAKAO BLIND RECRUITMENT k진수에서 소수 개수 구하기

이동한·2023년 6월 12일
0

알고리즘 기출

목록 보기
5/22
class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        StringBuilder sb = new StringBuilder();
        while(n!=0){
            sb.append(n%k);
            n = (int)(n/k); // 한 자리수로만 나머지가 나와서  sb.reverse().toString()이 가능했다.
        }
        String kNum = sb.reverse().toString(); // 
        for(String el : kNum.split("0")){
            if(el.equals("")) continue;
            if(isPrime(Long.parseLong(el))) answer++;
        }
        return answer;
    }
    public boolean isPrime(long num){
        if(num<2) return false;
        boolean res = true;
        for(int i=2; i<=Math.sqrt(num); i++){ // i*i<=num 의 연산보다 훨씬 작다 
            if(num%i ==0) return false;
        }
        return res;
    }
}

배운점:
Stringbuilder sb = new StringBuilder();
sb.reverse().toString() -> 단어 뒤집기

소수 판별시: i*i<=num 보다 i<Math.sqrt(num)이 더 빠르다
10진수 n을 k진법 변환시: temp = n%k + temp, n/=k

profile
Pragmatic, Productive, Positivist

0개의 댓글