프로그래머스 LEVEL 2(소수 찾기)
-
사용 언어 : javascript
-
해결 날짜 : 2022-09-02
-
해결 방법 :
- 순열을 통해 중복되지 않는 모든 경우의 수 찾기
- 찾아진 순열을 돌며 소수인지 판별
-
회고 : -
-
코드
const getPermutations = (arr, num) => { const results = []; if (num === 1) return arr.map(v => [v]); arr.forEach((fixed, index, origin) => { const rest = [...origin.slice(0, index), ...origin.slice(index + 1)]; const permutations = getPermutations(rest, num - 1); const attached = permutations.map(v => [fixed, ...v]); results.push(...attached); }); return results; } const getAllPermutations = (arr) => { const results = []; arr.forEach((value, index, origin) => { results.push(...getPermutations(origin, index + 1)); }); return results; } const isPrimeNumber = (n) => { if(n == 1) return false; for(let i = 2; i < n; i++){ if(n % i == 0) return false; } return true; } function solution(numbers) { var answer = 0; const permutations = []; numbers = numbers.split(''); numbers = numbers.map((number) => { return Number(number); }); for (const permutation of getAllPermutations(numbers)) { const temp = Number(permutation.join('')); permutations.includes(temp) || temp === 0 || temp === 1 ? null : permutations.push(temp); } for (const permutation of permutations) { isPrimeNumber(permutation) ? answer++ : null; } return answer; }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges