function find(num){
if(num===1 || num===0) return false
for(let i = 2 ; i<=Math.sqrt(num);i++){
if(num%i === 0 ) return false
}
return true
}
function solution(numbers) {
var answer = new Set();
const len =numbers.length
let tmp = Array.from({length:len},()=>'')
let ch = Array.from({length:len},()=>0)
function DFS(v){
if(v!==len){
for(let i=0; i<len; i++){
if(ch[i]===0){
ch[i] = 1
tmp[v]=numbers[i]
find(Number(tmp.join(''))) && answer.add(Number(tmp.join('')))
DFS(v+1)
ch[i] = 0
tmp[v]=''
}
}
}
}
DFS(0)
return answer.size
}
풀이
- 숫자의 재사용을 막기위해 ch 배열을 생성하여 체크하며 탐색
- 소수가 맞으면 set에 저장하여 중복을 없앤후 size를 리턴