DevLog:-)

[프로그래머스][Javascript]소수찾기 본문

알고리즘/프로그래머스

[프로그래머스][Javascript]소수찾기

hyeon200 2023. 7. 29. 21:24
반응형

문제

소수 찾기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

코드

function solution(numbers) {
    var answer = 0;
    let set = new Set();
    let visited = Array(numbers.length).fill(0);
  
    let Num = Array.from(numbers);
    Num =Num.map((e)=>parseInt(e)) //문자열-> 숫자 배열로 변환
    
    function check(n){
        let k = n>4 ? n/2 : n;
        for(let i =2 ;i<k ;i++){
            if(n%i ==0){return 0;}
        }
        if(n ==1 ||n==0){return 0;}
        return 1;
    }
    
    
    function dfs(num,y){
        if(!set.has(num)){
            if(check(num)){
                answer++;}
            set.add(num);}
        for(let i in Num){
            if(visited[i]==0){
                visited[i] =1;
                dfs(num+(y*10)*Num[i],y*10);
                visited[i] =0;
            }
        }
        return;
    }
    
    for(let i in Num){
        visited[i] = 1;
        dfs(Num[i],1);
        visited[i] = 0;
    }
    
    return answer;
}

 

✅checkpoint!

Math.sqrt(9) //3 -숫자의 제곱근을 반환
-소수 판별시 사용 가능
1.arr = Array.from(str);
2.arr = str.split('');
-문자열로 배열로 만들기
parsInt('2');
Number('2');
-문자 숫자로 변환하기

 

💡idea요약

2개의 함수 구현 1.소수 판별함수 구현
2.주어진 numbers문자열에서 가능한 숫자 조합을 모두 순회하기 위해 dfs함수 구현 
숫자 중복 check를 방지하기 위해 고유한 값을 다루는 set 자료구조 이용
반응형