Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

개발의변화

프로그래머스 LV2 소수찾기 본문

알고리즘

프로그래머스 LV2 소수찾기

refindmySapporo 2023. 4. 13. 20:13
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42839

 

해설

function solution(numbers) {
    let question = new Set()
    let count = 0
    function permutation(arr,n,result) {
        if (result.length==n) {
            question.add(Number(result.join("")))
            return
        }
        for (let i = 0; i < arr.length; i++) {
            permutation([...arr.slice(0,i),...arr.slice(i+1)],n,[...result,arr[i]])
        }
    }
    function searchDecimal(num) {
        if (num < 2) return false
        for (let i = 2; i <= Math.sqrt(num); i++) { //제곱근을 포함해야 한다
            if (num%i==0) return false
        }
        return true
    }
    numbers=numbers.split("").map(s=>parseInt(s))
    for (let i = 1; i <=numbers.length; i++) {
        permutation(numbers,i,[])
    }
    for (x of question) {
        if (searchDecimal(x)) {
            count++
        }
    }
    return count
}

순열을 이용해서 배열의 원소들로 조합할 수 있는 경우의 숫자를 구한다음 소수 판별을 하여 추려내면 된다

이 때 걸렸던 문제는 소수 판별 함수내에서 파라미터를 인수로 분해할 때 반복문의 범위를 파라미터의 제곱근까지 포함을 해야하던 것이었다. 잊지말자.

반응형