[프로그래머스] k진수에서 소수 개수 구하기 - javascript

김지원·2022년 1월 30일
0

coding-test

목록 보기
13/25
post-thumbnail

📖 문제링크

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

문제 설명

숫자가 주어지고 주어진 k진수로 바꾼 후 변환된 수 안에 조건에 맞는 소수가 몇 개인지를 알아내면 된다.

  • 양쪽에 0이 있는 경우
  • 오른쪽에 0이 있는 경우
  • 왼쪽에 0이 있는 경우

📃 조건

  • 1 ≤ n ≤ 1,000,000
  • 3 ≤ k ≤ 10

👨‍💻 문제풀이

필자가 푼 문제풀이


function primeNumber(number) {
    for(let i = 2; i*i <= number; i++){
            if(number % i == 0) return false;
        }
    return true;
}

function solution(n, k) {
    let result = 0;
    let changeNumber = n.toString(k);
    const numbers = changeNumber.split("0");

    for (let number of numbers) {
        if (number === '') continue;
        if (+number === 1) continue;
        if (primeNumber(+number)) result += 1;
    }

    return result;
}

먼저 toString을 이용해 k진수로 바꾼 후 split으로 0을 기준으로 숫자들을 나눠주었다.

그 다음 1인 부분과 0이 연속으로 있을 경우에 나오는 빈문자열을 제외한 부분에 대해 소수인지 아닌지를 판단 한 후 그 결과값을 return하였다.

🧐 다른 사람들의 코드

function isPrime(n){
    if(typeof n !== 'number' || n < 2) return false
    for(let i=2; i<=Math.sqrt(n); i++){
        if(n%i === 0) return false
    }
    return true
}

function solution(n, k) {
    let nums = n.toString(k).split('0');
    return nums.filter(v=>isPrime(+v)).length
}

filter를 적극적으로 활용해야겠다는 생각이 드는 풀이다

2022.01.30

profile
backend-developer

0개의 댓글