프로그래머스 JS LV1

LV1 35 소수 만들기

와라리요 2022. 12. 30. 15:01

문제 설명

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

 

제한사항

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

 

입출력 예

nums result
[1, 2, 3, 4] 1
[1, 2, 7, 6, 4] 4

 

나만의 풀이

  앞에 있는 문제를 2개 합친 것이랑 같아 제목과 링크를 남긴다. 우선 경우의 수를 구하고 ((삼총사) 링크) 소수인지 판별(소수 찾기 링크)을하고 카운터를 쌓으면 답이 나온다.

function solution(nums) {
    let arr = [];
    const len = nums.length;
    let count = 0;
    
    for(let i = 0; i < len - 2; i++) {
        for(let j = i+1; j < len - 1; j++) {
            for(let k = j+1; k < len; k++) {
                arr.push(nums[i] + nums[j] + nums[k]);
            }
        }
    }
    
    const isPrime = (num) => {
        const sqrt = Math.ceil(Math.sqrt(num));
        for (let i = 3; i <= sqrt; i += 2) {
            if(num % i === 0) return 0;
        }
        return 1;
    }
    
    for (let i = 0; i < arr.length; i++) {        
        if(arr[i] % 2 !== 0) {
            count += isPrime(arr[i]);
        }
    }
    
    return count;
}

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

LV1 37 실패율(2019 KAKAO BLIND RECRUITMENT)  (0) 2023.01.02
LV1 36 콜라 문제  (0) 2022.12.30
LV1 34 모의고사  (0) 2022.12.29
LV1 33 소수 찾기  (0) 2022.12.29
LV1 32 폰켓몬  (0) 2022.12.28