코딩테스트/기본

[프로그래머스/JavaScript] 소수 만들기 (Level 1)

고코모옹 2021. 5. 26. 21:56

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

 

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

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

programmers.co.kr

 

1. 문제 설명

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

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


2. 소수 판별

  • 3중 반복문을 돌려 그 합계가 소수인지 판단
  • 소수 판별하는 코드가 중요
  • 제곱근보다 작은 수에서 나눠지는 수가 없을 경우 제곱근보다 큰 수에서도 나눠지는 수가 없기 때문에 소수로 판단 
function isPrime(num) {    
    let result = false;
    if(num === 2) return true;

    for(let i = 2; i <= Math.floor(Math.sqrt(num)); i++) {
        if(num % i === 0) {            
            result = false;
            break;
        } else {
            result = true;
        }
    }

    return result;
}