function combination(arr,num) {
let result = [];
if(num == 1) return arr.map(e => [e]);
arr.forEach((e,i,array) => {
if(i == array.length-(num-1)) return;
let next = array.slice(i+1);
let combinations = combination(next,num-1);
let newArr = combinations.map((combi) => [e,...combi]);
result.push(...newArr);
})
return result
}
function solution(nums) {
let answer = 0;
let numOfCase = combination(nums,3);
numOfCase.map(e => e.reduce((acc,cur) => acc+cur)).forEach((e,i) => {
answer++;
for(let j = 2; j<= Math.sqrt(e); j++) {
if(e % j == 0) {
answer--;
break;
}
}
})
return answer;
}
먼저 조합함수를 구현하여 n개의 숫자 중 m개의 숫자를 뽑는 경우를 2차원 배열로 만들어 반환한다.
ex) [[1,2,3],[1,2,4],[2,3,4]]
배열의 요소를 각 경우의 수를 더한 값으로 치환한다.
ex) [6,7,9];
각 요소가 소수인지 아닌지 반복문으로 찾아낸다.