[프로그래머스 Lv.2] 완전탐색 - 소수 찾기

김민지·2024년 2월 11일
0

✨ 문제 ✨

✨ 정답 ✨

const isPrime=(theNumber)=>{  
    let middle=Math.floor(Math.sqrt(theNumber));
    let count=0;
    // 제곱수는 주의하기, 1 주의하기
    for ( let i=1; i<=middle;i++ ){
        if (theNumber%i===0){
            if (theNumber/i===i){
                count+=1;
            }else{
                count+=2;
            }
        }
    }
    if (count===2){
        return true;
    }else if (theNumber===1){
        return false;
    }else{
        return false
    }
}


function solution(numbers) {
    const getPermutations = (array) => {
        const results = new Set(); // 중복된 소수를 방지하기 위해 Set 사용

        const permute = (arr, current) => {
            if (current.length > 0) {
                const num = parseInt(current.join(''));
                if (isPrime(num)) {
                    results.add(num);
                }
            }

            if (arr.length === 0) return;

            for (let i = 0; i < arr.length; i++) {
                const newArr = arr.slice(0, i).concat(arr.slice(i + 1));
                permute(newArr, current.concat(arr[i]));
            }
        };

        permute(array, []);

        return results;
    };

    const numbersArray = numbers.split('');
    const permutations = getPermutations(numbersArray);

    return permutations.size;


}

🧵 참고한 정답지 🧵

💡💡 기억해야 할 점 💡💡

순열, 조합 조금 더 공부해야겠다.

profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보