소수 만들기 자바스크립트

HyosikPark·2020년 11월 28일
0

알고리즘

목록 보기
49/72
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];
각 요소가 소수인지 아닌지 반복문으로 찾아낸다.

참고

https://jun-choi-4928.medium.com/javascript%EB%A1%9C-%EC%88%9C%EC%97%B4%EA%B3%BC-%EC%A1%B0%ED%95%A9-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-21df4b536349

0개의 댓글