코딩테스트 | (JavaScript) 프로그래머스 : 소수 만들기

trevor1107·2021년 11월 21일
0

✅문제

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

❕ 제한사항

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

🎹📢입출력 예제

✍풀어보기

function solution(nums) {
    let answer = 0;
    let sum = 0;
    
    for (let i = 0; i < nums.length - 2; ++i) {
        for (let j = i + 1; j < nums.length - 1; ++j) {
            for (let k = j + 1; k < nums.length; ++k) {
                sum = nums[i] + nums[j] + nums[k]
                
                if (isPrimeNumber(sum)) answer++
            }
        }
    }
    
    return answer;
}

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

소수 문제가 나와서 에라토스테네스의 체가 떠오르긴 했지만, 기억나지 않아 전에 풀었던 소수 찾기 문제를 다시 찾아보고 풀이를 시작했다. 우선 소수를 판별해주는 함수를 만들고, 3개의 숫자가 겹치지않게 3개의 반복문을 구성하면서 정확히 나오는지 로그도 찍어보고 확인해 완성시켰다.

3개의 숫자를 더한다는 규칙이 있어서 난이도가 낮은 것이라고 생각된다.



참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글