새소식

Programmers

[Programmers] 소수 찾기 문제 - (javascript)

  • -
728x90
문제 이름 :  소수 찾기

 

<<< 문제 내용 >>>



 

function solution(numbers) {
    let answer = 0;
    
    // 백트래킹에 011과 11 그리고 순서가 반대인 11 다 기록되기 때문에
    // 중복을 제거해주기 위해 Set을 이용합니다.
    let temp = new Set();
    let visited = new Array(numbers.length).fill(false);
    
    const dfs = (cnt, arr) => {
        if(cnt===numbers.length){
            return;
        }
        
        for(let i=0; i<numbers.length; i++){
            if(!visited[i]){
                visited[i] = true;
                let str = arr+numbers[i];
                dfs(cnt+1, str);
                temp.add(Number(str));
                visited[i] = false;
            }
        }
    }
    
    dfs(0, "");
    
    const sosu = (idx) => {
        if(idx === 2) return true;
        
        for(let i=2; i<=Math.sqrt(idx); i++){
            if(idx%i === 0){
                return false;
            }
        }
        return true;
    }
    temp.forEach((el)=> {
        if(sosu(el)) answer++;
    });
    
    return answer;
}

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.