[프로그래머스] 소수찾기(Level2) - 완전탐색 - JavaScript

llsh·2021년 9월 6일
0

프로그래머스

목록 보기
1/5
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를 리턴
profile
기록 기록 기록..

0개의 댓글