https://programmers.co.kr/learn/courses/30/lessons/92335
숫자가 주어지고 주어진 k진수로 바꾼 후 변환된 수 안에 조건에 맞는 소수가 몇 개인지를 알아내면 된다.
📃 조건
필자가 푼 문제풀이
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