[プログラマー]k進数から小数-javascriptを取得


📖 質問リンク
https://programmers.co.kr/learn/courses/30/lessons/92335
問題の説明
1つの数字を与えて、与えられた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が連続したときに現れる空の文字列以外の部分について小数であるか否かを判断し、結果値を返します.
    🧐 他者のコード
    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