https://programmers.co.kr/learn/courses/30/lessons/12977
문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
문제 코드
function is_primeNum(num) {
let sum = 0;
num.forEach(e => {
sum += e;
})
for(let i = 2 ; i < sum - 1 ; i++) {
if(sum % i === 0)
return 0;
}
return 1;
}
function get_Combination(nums, select_number) {
let res = [];
if(select_number === 1)
return nums.map(e => [e]);
nums.forEach((fixed, index, array) => {
let rest = array.slice(index + 1, array.length);
let combination = get_Combination(rest, select_number - 1);
let attached = combination.map(e => [fixed, ...e]);
res.push(...attached);
});
return res;
}
function solution(nums) {
let answer = 0;
let cnt = 0;
let res = get_Combination(nums, 3);
res.forEach(e => {
answer += is_primeNum(e);
})
return answer;
}
후기
조합 짜는게 제일 중요했던 문제, 기본적인 조합같은 알고리즘은 필히 숙달할 수 있도록 해야겠다
'프로그래머스 (JS)' 카테고리의 다른 글
완주하지 못한 선수 (0) | 2022.04.02 |
---|---|
124 나라의 숫자 (0) | 2022.03.31 |
멀쩡한 사각형 (0) | 2022.03.13 |
내적 (0) | 2022.03.11 |
음양 더하기 (0) | 2022.03.11 |
Comment