๋ฌธ์ ๋งํฌ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์์ ์ฐพ๊ธฐ
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข ์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค. ๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด
programmers.co.kr
์ ๊ทผ ๋ฐฉ๋ฒ
์ฃผ์ด์ง ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ n์ผ๋ nP1, nP2, ~~ nPn๊น์ง ๊ตฌํ ๋ค
๊ตฌํ ๋ฐฐ์ด ์ค ์์์ธ ์ซ์๋ฅผ ์ฐพ๋ ์์ ํ์ ๋ฌธ์ ์ด๋ค.
๋ฐฐ์ด ๋ถ๋ถ
for (let selectNumber = 1; selectNumber <= numbers.length; selectNumber++) { permutationArr.push( ...getPermutations(numbers, selectNumber) .map((e) => e.join('')) .map((e) => parseInt(e)) ); }โ
2์ฐจ์ ๋ฐฐ์ด์ push ๋ฐ๋ ๋ถ๋ถ์ spread ์ฐ์ฐ์๋ฅผ ํตํด ์ฝ๊ฒ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ง๋ค ์ ์์๊ณ ,
map์ ํตํด joinํ ๋ค, ์ ์๋ก ๋ฐ๊ฟ ์ ์์๋ค.
function solution(numbers) {
var answer = 0;
numbers = numbers.split('');
const permutationArr = [];
for (let selectNumber = 1; selectNumber <= numbers.length; selectNumber++) {
permutationArr.push(
...getPermutations(numbers, selectNumber)
.map((e) => e.join(''))
.map((e) => parseInt(e))
);
}
const permutationSet = [...new Set(permutationArr)].map((e) => parseInt(e));
permutationSet.forEach((e) => {
if (isPrime(e)) answer += 1;
});
return answer;
}
const getPermutations = function (arr, selectNumber) {
const results = [];
if (selectNumber === 1) return arr.map((value) => [value]);
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((permutation) => [fixed, ...permutation]);
results.push(...attached);
});
return results;
};
const isPrime = (num) => {
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return num >= 2;
};
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ํฐ ์ ๋ง๋ค๊ธฐ (42883) (0) | 2022.06.12 |
---|---|
[Javascript] ๊ตฌ๋ช ๋ณดํธ (42885) (0) | 2022.06.11 |
[Javascript] ํ๊ฒ ๋๋ฒ (43165) (0) | 2022.06.11 |
[Javascript] ๊ฐ์ฅ ํฐ ์ (42726) (0) | 2022.06.11 |
[Javascript] ์์ ๋ง๋ค๊ธฐ (12977) (0) | 2022.06.10 |