개발의변화
프로그래머스 LV2 소수찾기 본문
반응형
문제
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
}
순열을 이용해서 배열의 원소들로 조합할 수 있는 경우의 숫자를 구한다음 소수 판별을 하여 추려내면 된다
이 때 걸렸던 문제는 소수 판별 함수내에서 파라미터를 인수로 분해할 때 반복문의 범위를 파라미터의 제곱근까지 포함을 해야하던 것이었다. 잊지말자.
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 LV2 질문목록 (0) | 2023.04.16 |
---|---|
프로그래머스 LV2 삼각 달팽이 (0) | 2023.04.14 |
프로그래머스 LV2 큰 수 만들기 (0) | 2023.04.13 |
프로그래머스 LV2 2 x n 타일링 (0) | 2023.04.13 |
프로그래머스 LV2 질문목록 (0) | 2023.04.12 |