코딩테스트 45일차
소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
function solution(nums) {
var answer = 0;
for (var i = 0; i < nums.length - 2; i++) {
for (var j = i + 1; j < nums.length - 1; j++) {
for (var k = j + 1; k < nums.length; k++) {
var sum = nums[i] + nums[j] + nums[k];
if (isPrime(sum)) {
answer++;
}
}
}
}
return answer;
}
function isPrime(num) {
if (num < 2) {
return false;
}
for (var i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
✏️풀이
solution 함수: 주어진 숫자 배열 nums에서 세 개의 숫자를 선택하여 더했을 때 소수가 되는 경우의 개수를 반환합니다.
answer 변수는 소수가 되는 경우의 개수를 저장할 변수입니다.
for 문을 사용하여 세 개의 숫자를 선택하는 모든 경우의 수를 확인합니다.
내부의 첫 번째 for 문은 첫 번째 숫자의 인덱스를 나타냅니다.
내부의 두 번째 for 문은 두 번째 숫자의 인덱스를 나타냅니다.
내부의 세 번째 for 문은 세 번째 숫자의 인덱스를 나타냅니다.
선택된 세 개의 숫자를 더하여 sum 변수에 저장합니다.
isPrime 함수를 사용하여 sum이 소수인지 판별합니다.
소수인 경우 answer를 증가시킵니다.
모든 경우의 수를 확인한 후, answer를 반환합니다.
isPrime 함수: 주어진 숫자 num이 소수인지를 판별하여 true 또는 false를 반환합니다.
num이 2보다 작은 경우는 소수가 아니므로 false를 반환합니다.
for 문을 사용하여 2부터 num의 제곱근까지의 숫자로 나누어 떨어지는지를 확인합니다.
나누어 떨어진다면 num은 소수가 아니므로 false를 반환합니다.
나누어 떨어지지 않는 경우 num은 소수이므로 true를 반환합니다.