PS/프로그래머스

[Level2][Javascript] 소수 찾기

returnzero 2022. 6. 24. 13:20
function solution(numbers) {
    var answer = 0;
    let obj={};
    let arr= numbers.split("").map(e=>Number(e));
    // console.log(arr);
    for (let i =1; i<=arr.length;i++){
        let permu_arr=permutation(arr,i);
        // console.log(permu_arr);
        for (let value of permu_arr){
            // console.log(value);
            let a= Number(value.join(''));
            if(isPrime(a)>0){
                // console.log(a)
                obj[a]= (obj[a]||0)+1;
            }
        }
    }
    answer= Object.keys(obj).length;
    return answer;
}

function isPrime(n){
    if (n<=1) return -1;
    for (let i=2; i<n;i++){
        if(n%i===0) return -1;
    }
    return n;
}



function permutation(arr, num){
  const res = [];
  if(num === 1) return arr.map((v) => [v]);

  arr.forEach((v, idx, arr) => {
    const rest = [...arr.slice(0,idx), ...arr.slice(idx+1)];
    const permutations = permutation(rest, num-1);
    const attach = permutations.map((permutation) => [v, ...permutation]);
    res.push(...attach);
  })
  return res;
}

순열 코드는 암기하는게 좋겠다.