완전 탐색을 하기 위해서 케이스를 배열에 담고
splice를 이용하여서 재귀하는 방식을 이용하였다.
첫번째 인자에는 남은 케이스를
두번째 인자에는 현재 타겟을 이용하였고,
남은 케이스의 길이를 반복하였다.
중복을 체크하기 위해서 Set을 이용하였는데,
has와 add 메소드를 파악해두자.
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
|
function solution(numbers) {
var answer = 0;
var numberArray = numbers.split('');
var checkNumber = new Set()
recursion(numberArray,'');
function recursion(remainingNumberArr, targetNumber) {
if (targetNumber.length > 0) {
if (checkNumber.has(Number(targetNumber))=== false) {
checkNumber.add(Number(targetNumber));
if (chkPrime(Number(targetNumber))) {
answer++;
}
}
}
if (remainingNumberArr.length > 0) {
for (var i = 0; i< remainingNumberArr.length; i++) {
var t = remainingNumberArr.slice(0)
t.splice(i,1);
recursion(t,targetNumber + remainingNumberArr[i]);
}
}
}
function chkPrime(num) {
if (num < 2) return false;
if (num === 2) return true;
for (var i = 2; i <= Math.sqrt(num); i++) {
if (num%i===0) return false;
}
return true;
}
return answer;
}
|
'Algorithm' 카테고리의 다른 글
[스택/큐] 프린터, 탑, 쇠막대기, 다리를 지나는 트럭 (0) | 2019.07.26 |
---|---|
[DP] 가장 큰 정사각형 찾기/ 땅따먹기 (0) | 2019.07.19 |
[탐욕법] 체육복, 구명보트 (0) | 2019.07.09 |
[DP] N으로 표현, 타일 장식물, 정수 삼각형 (0) | 2019.07.07 |
[힙(Heap)] 더 맵게, 라면 공장, 이중 우선순위 큐 (0) | 2019.07.05 |