문제 설명

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

 

function solution(nums) {
    const sumOfThreeNums = [];
    let answer = 0;

    const combinationThree = (currArr, leaved) => {
        if (currArr.length === 3) {
            let sum = currArr[0] + currArr[1] + currArr[2];
            sumOfThreeNums.push(sum);
            return;
        } else {
            for (let i = 0; i < leaved.length; i++) {
                combinationThree([...currArr, leaved[i]], leaved.slice(i + 1));
            }
        }
    };

    combinationThree([], nums)

    const isDecimal = (num) => {
        for (let i = 2; i <= Math.sqrt(num); i++) {
            if (num % i === 0)  {
                return false
            }
        }
        return true
    }

    for (let i = 0; i < sumOfThreeNums.length; i++) {
        if (sumOfThreeNums[i] % 2 === 1) {
            if (isDecimal(sumOfThreeNums[i])) {
                answer++
            }
        }   
    }
    return answer;
}

'Computer Science > 코딩테스트 문제 모음' 카테고리의 다른 글

정렬  (0) 2021.07.24
스택/큐 자료구조 문제  (0) 2021.07.23
Hash Map  (0) 2021.06.14
Sliding Window Algorithm  (0) 2021.06.14
Two Pointers Algorithm  (0) 2021.06.05

+ Recent posts