const isPrime=(theNumber)=>{
let count=0;
for ( let i=1; i<=Math.floor(Math.sqrt(theNumber));i++ ){
if (theNumber%i===0){
if (theNumber/i===i){
count+=1;
}else{
count+=2;
}
}
}
if (count===2){
return true;
}else if (theNumber===1){
return false;
}else{
return false
}
}
function solution(numbers) {
const getPermutations = (array) => {
const result = new Set();
const permute = (arr, current) => {
if (current.length > 0) {
const num = parseInt(current.join(''));
if (isPrime(num)) {
result.add(num);
}
}
if (arr.length === 0) return;
for (let i = 0; i < arr.length; i++) {
const newArr = arr.slice(0, i).concat(arr.slice(i + 1));
permute(newArr, current.concat(arr[i]));
}
};
permute(array, []);
return result;
};
const numbersArray = numbers.split('');
const permutations = getPermutations(numbersArray);
return permutations.size;
}
내 코드 설명
우선 소수인지 판별하는 isPrime을 만들어두고, permute로 주어진 숫자로 만들 수 있는 모든 숫자를 만들어서 소수인지 isPrime으로 확인한다.
permute 방법 때문에 다시 풀었는데 이제는 풀 수 있는 것 같다