문제풀이/프로그래머스
소수 만들기
dev_kong
2021. 12. 23. 02:07
728x90
728x90
https://programmers.co.kr/learn/courses/30/lessons/12977/solution_groups?language=javascript&type=my
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
자바스크립트 마려워서 쉬운거 하나 풀어봄
문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
접근방법
완전 탐색을 이용해서 모든 합을 구해서 배열 하나에 때려넣고
소수인지 확인해주면 된다.
소수인지 아닌지 확인하는 방법은 많이 다뤘으니까 패쓰.
https://kong-dev.tistory.com/76?category=982994
소수판별하기
이거 소수판별이라고면 치면 나오는 내용이긴한데 한번 정리해두면 안까먹을거 같아서 정리해보려한다. 어떤 숫자가 소수인지 아닌지 판별을 할때는 2부터 그 숫자-1까지 하나하나 나누면서 조
kong-dev.tistory.com
// 소수인지 아닌지 판별하는 함수를 따로 선언해줬다.
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