https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=javascript
function solution(numbers) {
const numberArray = numbers.split("");
const set = new Set();
recursive(numberArray, "");
function recursive(nums, str) {
if (str.length > 0) {
const num = Number(str);
if (!set.has(num) && chkPrime(num)) {
set.add(num);
}
}
if (nums.length > 0) {
nums.forEach((e, i) => {
const t = nums.filter((_n, index) => i !== index);
recursive(t, str + e);
});
}
}
function chkPrime(num) {
if (num < 2) return false;
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
return set.size;
}
재귀적으로 호출되며 모든 가능한 숫자 조합을 생성하고 소수 여부를 검사한다. 아직 처리해야 할 숫자(nums 배열)와 지금까지 만들어진 숫자(str 문자열)을 인자로 받는다
소수 여부를 확인하는 함수이다
이 문제는 결국 못풀어낸 문제였다 그래서 다른 사람 풀이를 가져와 조금 수정했다.