소수찾기
문제프로그래머스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function solution(numbers) {
var answer = 0;
const prime = [];
combination('', numbers, prime);
return prime.length;
}
const combination = (str, remains, prime) => {
for(let i = 0; i < remains.length; i++) {
const newStr = str + remains[i];
const num = Number(newStr);
if (isPrime(num)) {
if (!prime.includes(num)) {
prime.push(num);
}
}
if (remains.length !== 1) {
const newRemains = remains.concat([]);
const ra = newRemains.split('');
ra.splice(i, 1);
combination(newStr, ra.join(''), prime);
}
}
}
const isPrime = (num) => {
if (num === 0 || num === 1) {
return false;
}
// 소수 체크: 해당 숫자를 i의 2부터 제곱근까지 나누어 본다
// -> i를 제곱한 수로 나눈다와 같은 의미
for (let i = 2; i*i <= num; i++) {
if(num % i === 0) {
return false;
}
}
return true;
}
console.log(solution('17'));
회고
전체 조합(combination). 소수를 판단 하는 법을 필요로 하는 문제 전체 조합에 대해 모두 소수 체크를 하는 완전 탐색. 소수 체크: (https://myjamong.tistory.com/139)