[ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ์์ ์ฐพ๊ธฐ (js)
https://programmers.co.kr/learn/courses/30/lessons/42839?language=javascript
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์์ ์ฐพ๊ธฐ
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข ์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค. ๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด
programmers.co.kr
function solution(numbers) {
const number = [...numbers];
const answer = [];
for(let i = 1; i <= number.length; i++){
permutation(number,i).forEach((v) => {
isPrime(+v) ? answer.push(+v) : answer
});
}
return [...new Set(answer)].length
}
function isPrime(num){
let start = 2;
while (start <= Math.sqrt(num)) {
if (num % start++ < 1){
return false;
}
}
return num > 1;
}
function permutation(arr, selectNum){
const result = [];
if(selectNum === 1) return arr.filter((v)=> [v]);
arr.forEach((v,idx,arr)=>{
const fixer = v;
const restArr = arr.filter((val, index)=> index !== idx);
const permuArr = permutation(restArr, selectNum-1);
const combineFixer = permuArr.map((v)=> fixer + v);
result.push(...combineFixer);
})
return result;
}
permutation ํจ์ => arr => ๋ฐฐ์ด selectNum => ๊ฐ์
selectNum๋งํผ ์กฐํฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๋ ํจ์ / ์ค๋ณต๊น์ง ์ ๋ถ ๋ค์ด๊ฐ (011, 11, 0011) ๋์ค์ ์ฒ๋ฆฌ
isPrime ํจ์ => ์์ ์ฒดํฌ ํจ์์ด๋ค. ์ ๊ณฑ๊ทผ์ ํตํด ์๊ฐ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์๋ค.
solution์์ ์กฐํฉํ ๊ฒฐ๊ณผ๋ฅผ answer์ ์ ๋ถ ๋ด๊ณ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํด Set์ ์ฌ์ฉํ ํ answer์ ๊ธธ์ด๋ฅผ ๋ฆฌํดํ๋ฉด ๋!