[JavaScript][Programmers] 소수 만들기

조준형·2021년 7월 16일
0

Algorithm

목록 보기
38/142
post-thumbnail

🔎 소수 만들기

❓ 문제링크

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

📄 제출 코드

function solution(nums) {
    var answer = 0;
    dfs(nums, 0)
    let sumArr = [];
    for (var i = 0; i < answers.length; i++) {
        let sum = 0;
        for (var j = 0; j < 3; j++) {
            sum += answers[i][j];
        }
        sumArr.push(sum);
    }
    
    // let cnt = 0;
    sumArr.forEach(el => {
        if (chkPrime(el)) {
            console.log(el);
            answer++;
        }
    })
    return answer;
}
let answers = [];
function dfs(nums, depth, arr = []) {
    if (depth == 3) answers.push([...arr]);
    else {
        for (var i = 0; i < nums.length; i++) {
            arr.push(nums[i]);
            dfs(nums.slice(i + 1), depth + 1, arr);
            arr.pop();
        }
    }
}
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;
}
let nums = [1, 2, 3, 4];
console.log(solution(nums));

어제 소수찾기때문인지 소수만들기 문제가 눈에 들어와서 풀어봤다.
숫자배열을 주고, 조합하여 더한 합이 소수되는거를 세는 문제였다.
간단하게 조합을 구하여 합배열을 만들어 소수체크를 해서 답을 풀었다.
소수 체크는 어제와 마찬가지로 2보다작으면 false 2면 소수, 2부터 숫자의 제곱근까지 돌면서 나눈 나머지가 0이 있으면 false, 없으면 true를 리턴하여 소수 체크를 하였다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글