기록하는 개발자

[프로그래머스][코딩테스트 고득점 Kit][Javascript] 소수 찾기 본문

Algorithm

[프로그래머스][코딩테스트 고득점 Kit][Javascript] 소수 찾기

밍맹030 2023. 8. 13. 02:30
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=javascript# 

 

프로그래머스

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

programmers.co.kr

전체코드

function solution(numbers) {
    let answer = [];
    let numArr = numbers.split("");
    
    // fixedNum : 순열을 통해 모든 조합을 생성할 때 고정할 숫자값
    // ex) 134의 경우
    // i) fixedNum=1 -> 13, 14의 소수 여부 검사
    // ii) fixedNum=13 -> 134의 소수 여부 검사
    function getPermutationArr(numArr, fixedNum){
        if(numArr.length==0) return;      
        
        for(let i=0; i<numArr.length; i++) {
            const newNum = fixedNum + numArr[i];
            const copyArr = [...numArr];
            // splice를 통해 index i 번째 요소 삭제
            copyArr.splice(i, 1);
            // newNum : 01    +newNum : 1
            // answer 배열 내 newNum이 없고, newNum이 소수인 경우
            if (!answer.includes(+newNum) && isPrime(+newNum)){                    
                answer.push(+newNum) 
            }
            getPermutationArr(copyArr, newNum); 
        }
        
    }
    function isPrime(num){
        if(num<=1) return false;
        for (let i = 2; i <= Math.sqrt(num); i++) {
            if (num % i === 0) return false;
        }
        return true;
    }
    getPermutationArr(numArr,"")
    return answer.length;
}
728x90