function permutation(arr, selectNum) { // 순열을 구하는 함수
let result = [];
if (selectNum === 1) return arr.map((v) => [v]);
arr.forEach((v, idx, arr) => {
const fixer = v;
const restArr = arr.filter((_, index) => index !== idx);
const permuationArr = permutation(restArr, selectNum - 1);
const combineFixer = permuationArr.map((v) => [fixer, ...v]);
result.push(...combineFixer);
});
return result;
}
function isPrime(num) { // 소수 판별 함수
if(num == 0 || num ==1)
return false;
if(num == 2) {
return true;
}
for(let i = 2; i <= Math.floor(Math.sqrt(num)); i++){
if(num % i == 0){
return false;
}
}
return true;
}
function solution(numbers) {
var answer = 0;
var num=[...numbers];
var temp=[];
for(var i=1 ; i<=num.length ; ++i) {
permutation(num,i).forEach((element) => {
temp.push(parseInt(element.join('')));
});
}
const uniqueArr = temp.filter((element, index) => {
return temp.indexOf(element) === index;
});
for(var i =0 ; i<uniqueArr.length ; ++i) {
if(isPrime(uniqueArr[i]))
++answer;
}
return answer;
}
이 문제의 조건은 순열을 구한다는 뜻과 같다.
순열을 구하여 소수로 판별하면 된다.