/**
* 소수인지 판단하는 함수
*
* @param {number} number
* @returns {boolean}
*/
function isPrimeNumber(number) {
if(number < 2) return false;
for(let i=2; i<=Math.sqrt(number); i+=1) {
if(number % i === 0) return false;
}
return true;
}
// 순열을 저장할 Set(), 중복제거를 위해 Set으로 선언
let permutationList = new Set();
/**
* 모든 순열을 구하는 함수
*
* @param {string[]} numbers
* @param {string} fixed 고정 값
*/
function getPermutation(numbers, fixed) {
if(numbers.length === 0) return;
for(let i=1; i<numbers.length; i+=1) {
// 하나씩 더해주면서 고정 문자열로 만든다
let nextFixed = fixed + numbers[i];
let nextNumbers = [...numbers];
// 고정 문자열 제외
nextNumbers.splice(i, 1);
if(isPrimeNumber(+nextFixed) === true) permutationList.add(+nextFixed);
getPermutation(nextNumbers, nextFixed);
}
}
function solution(numbers) {
let answer = 0;
numbers = numbers.split('');
getPermutation(numbers, '');
answer = permutationList.size;
return answer;
}
'PS > Programmers' 카테고리의 다른 글
Programmers / Level 2 / [3차] 파일명 정렬 / JS (0) | 2022.12.27 |
---|---|
Programmers / Level 2 / 다리를 지나는 트럭 / JS (0) | 2022.12.27 |
Programmers / Level 2 / 영어 끝말잇기 / JS (0) | 2022.12.27 |
Programmers / Level 2 / [3차] n진수 게임 / JS (0) | 2022.12.10 |