[프로그래머스 Lv.2] 알고리즘 고득점 Kit 완전탐색 - 소수 찾기

김민지·2024년 4월 21일
0

✨ 정답 ✨

const isPrime=(theNumber)=>{  
    let count=0;
    for ( let i=1; i<=Math.floor(Math.sqrt(theNumber));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 result = new Set();
        const permute = (arr, current) => {
            if (current.length > 0) {
                const num = parseInt(current.join(''));
                if (isPrime(num)) {
                    result.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 result;
    };

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

🧵 참고한 정답지 🧵

💡💡 해설 💡💡

내 코드 설명
우선 소수인지 판별하는 isPrime을 만들어두고, permute로 주어진 숫자로 만들 수 있는 모든 숫자를 만들어서 소수인지 isPrime으로 확인한다.
permute 방법 때문에 다시 풀었는데 이제는 풀 수 있는 것 같다

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

0개의 댓글

관련 채용 정보