문제확인
https://programmers.co.kr/learn/courses/30/lessons/42839
문제풀이
const getPermutations = function (arr, selectNumber) {
const results = [];
if (selectNumber === 1) return arr.map((el) => [el]);
arr.forEach((fixed, index, origin) => {
const rest = [...origin.slice(0, index), ...origin.slice(index + 1)];
const permutations = getPermutations(rest, selectNumber - 1);
const attached = permutations.map((el) => [fixed, ...el]);
results.push(...attached);
});
return results;
};
function isPrime(number) {
if (number <= 1) return false;
if (number <= 3) return true;
if (number % 2 === 0) return false;
for (let i = 3; i <= Math.sqrt(number); i += 2) {
if (number % i === 0) return false;
}
return true;
}
function solution(numbers) {
let answer = 0;
let arrNumbers = numbers.split("");
const resultSet = new Set();
for (let i = 1; i <= numbers.length; i++) {
const resultOfPerm = getPermutations(arrNumbers, i).map((result) => Number(result.join('')));
resultOfPerm.forEach((result) => {
if (!resultSet.has(result)) {
resultSet.add(result);
if(isPrime(result)) answer++;
}
});
}
return answer;
}