소수 만들기

https://programmers.co.kr/learn/courses/30/lessons/12977

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

문제 설명

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항

  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

 

문제 코드
function is_primeNum(num) {
    let sum = 0;
    
    num.forEach(e => {
        sum += e;
    })
    
    for(let i = 2 ; i < sum - 1 ; i++) {
        if(sum % i === 0)
            return 0;
    }
    
    return 1;
}

function get_Combination(nums, select_number) {
    let res = [];
    if(select_number === 1)
        return nums.map(e => [e]);
    
    nums.forEach((fixed, index, array) => {
        let rest = array.slice(index + 1, array.length);
        let combination = get_Combination(rest, select_number - 1);
        let attached = combination.map(e => [fixed, ...e]);
        
        res.push(...attached);
    });
    
    return res;
}

function solution(nums) {
    let answer = 0;
    let cnt = 0;
    let res = get_Combination(nums, 3);
    
    res.forEach(e => {
        answer += is_primeNum(e);
    })
    
    return answer;
}

 

후기

조합 짜는게 제일 중요했던 문제, 기본적인 조합같은 알고리즘은 필히 숙달할 수 있도록 해야겠다

'프로그래머스 (JS)' 카테고리의 다른 글

완주하지 못한 선수  (0) 2022.04.02
124 나라의 숫자  (0) 2022.03.31
멀쩡한 사각형  (0) 2022.03.13
내적  (0) 2022.03.11
음양 더하기  (0) 2022.03.11