문제
제한사항
입출력 예
풀이
function isPrime(num) {
if (num <= 1) {
return false;
}
if (num == 2) {
return true;
}
for (let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
const solution = (numbers) => {
let mySet = new Set();
let splitNumbers = numbers.split('');
let visited = Array.from(Array(numbers.length), () => 0);
let tmp = [];
const dfs = (L) => {
if (L === splitNumbers.length) {
return;
} else {
for (let i = 0; i < splitNumbers.length; i++) {
if (!visited[i]) {
visited[i] = 1;
tmp.push(splitNumbers[i]);
mySet.add(parseInt(tmp.join('')));
dfs(L + 1);
tmp.pop();
visited[i] = 0;
}
}
}
};
dfs(0);
let answer = [...mySet].filter((e) => isPrime(e)).length;
return answer;
};
- 깊이 우선 탐색을 이용했다.
- set을 이용해 중복을 제거했고, filter를 이용해 소수인 것만 뽑아냈다.