https://programmers.co.kr/learn/courses/30/lessons/42839
function solution(numbers) {
var answer = 0;
let temp = numbers.split('');
let combin = [];
for(let i = 1; i <= temp.length; i++){
com(temp,i).forEach(item=>{
combin.push([...item]);
})
}
let numArr = combin.map(item=>{
return Number(item.join(''));
});
let newnumArr= numArr.filter((item,i)=>{
return numArr.indexOf(item)===i;
});
newnumArr.forEach((k)=>{
let flag = 1;
if(k>=2){
for(let i = 2; i <=Math.sqrt(k); i++){
if(k%i==0){
flag = 0;
break;
}
}
if(flag==1){
answer++;
}
}
})
return answer;
function com(arr, k){
let s = [];
if(k==1)
return [...arr];
arr.forEach((item,i)=>{
let fixed = item;
let rest = [...arr.slice(0,i), ...arr.slice(i+1)];
let restArr = com(rest,k-1);
let newArr = restArr.map((item1)=>[...fixed, ...item1]);
newArr.forEach(k=>s.push(k));
})
return s;
}
}
1. 순열을 구해서
2. 소수 판별을 한다
라는 단순한 논리로 구현하였다.
순열 구하는 로직이 정말 쏠쏠하게 쓰이는 것 같다.
'Algorithm > PGMS' 카테고리의 다른 글
PGMS - 아이템줍기 (0) | 2022.01.17 |
---|---|
PGMS - 피로도 (0) | 2022.01.14 |
PGMS 점프와 순간이동 (0) | 2022.01.10 |
PGMS 캐시 (0) | 2022.01.10 |
PGMS 전력망을 둘로 나누기 (0) | 2022.01.10 |