728x90
728x90
https://programmers.co.kr/learn/courses/30/lessons/12977/solution_groups?language=javascript&type=my
자바스크립트 마려워서 쉬운거 하나 풀어봄
문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
접근방법
완전 탐색을 이용해서 모든 합을 구해서 배열 하나에 때려넣고
소수인지 확인해주면 된다.
소수인지 아닌지 확인하는 방법은 많이 다뤘으니까 패쓰.
https://kong-dev.tistory.com/76?category=982994
// 소수인지 아닌지 판별하는 함수를 따로 선언해줬다.
function checkPrime(number) {
for (let i = 2; i <= Math.sqrt(number); i++) {
if (number % i === 0) return false;
}
return true;
}
function solution(nums) {
let answer = 0;
const sumArray = [];
// 3중 for문을 통한 완전탐색
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
for (let k = j + 1; k < nums.length; k++) {
const sum = nums[i] + nums[j] + nums[k];
sumArray.push(sum);
}
}
}
// 완전탐색을 통해 구한 모든 합이 들어있는 배열 sumArray에
// for문을 돌려서 위에서 선언한 함수(checkPrime)를 사용한다.
for (let s = 0; s < sumArray.length; s++) {
// 소수인 경우 answer에 1을 더한다.
if (checkPrime(sumArray[s])) answer += 1;
}
return answer;
}
const array = [1, 2, 7, 6, 4];
console.log(solution(array)); // 4
상쾌하다
728x90
728x90
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[Javascript] 폰켓몬 (0) | 2022.01.04 |
---|---|
모의고사 (0) | 2021.12.28 |
프린터 (0) | 2021.11.29 |
기능개발 (0) | 2021.11.27 |
대중소괄호 짝 맞추기 (0) | 2021.11.26 |
댓글