N

(프로그래머스 KAKAO JS)k진수에서 소수 개수 구하기 본문

프로그래머스 알고리즘/KAKAO

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

naeunchan 2022. 2. 5. 17:11
728x90
반응형

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

 

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

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

programmers.co.kr

 

 

 

주어진 n을 k로 나눠 나머지 값을 transformed 배열에 저장한다.

해당 배열을 reverse() 함수로 뒤집은 다음, join("")을 통해 한 문자열로 통합하고, 다시 split("0") 함수로 0을 구분자로 하여 결과를 만든다.

 

이 결과를 forEach문을 통해 curr이 공백이 아니고, isPrime 함수를 통해 소수인지 판별한 후 answer를 카운팅하면 된다.

const solution = (n, k) => {
    let answer = 0;
    const transformed = [];
    
    const isPrime = (n) => {
        if(n <= 1){
            return false;
        }
        
        for(let i = 2; i <= Math.sqrt(n); i++){
            if(n % i === 0){
                return false;
            }
        }
        
        return true;
    }
    
    while(n){
        transformed.push(n % k);
        n = Math.floor(n / k);
    }
    
    transformed.reverse().join("").split("0").forEach((curr) => {
        if(curr && isPrime(curr)){
            answer++;
        }
    });
    
    return answer;
}
728x90
반응형