728x90
반응형

소수 만들기
문제설명 :
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
입출력 예
nums | Return |
[1, 2, 3, 4] | 1 |
[1, 2, 7, 6, 4] | 4 |
접근
: nums 배열 내 3개의 숫자를 더했을 때, 그 합이 소수가 나오는지 판별하는 문제이다. 우선 3개의 for 문을 돌려, 배열을 서로 다른 3개의 숫자를 선택했다. 이후 isPrime 함수를 만들어 선택한 3개의 숫자의 합을 넣었을 때, 소수인지 판별했다. 소수이면 count에 1을 더하는 방식으로 문제를 해결했다.
함수 isPrime은 하나의 숫자 n을 받아 해당 숫자가 소수인지 판별하는 함수이다. while 문을 사용해 n을 2부터 n - 1까지 나눠 떨어지는 숫자를 찾았다. 만약, 해당 숫자가 있으면 false를 return하게 했다.
function solution(nums) {
let count = 0
for(let i=0; i<nums.length - 2; i++){
for(let j=i + 1; j<nums.length - 1; j++){
for(let k=j + 1; k<nums.length; k++){
if(isPrime(nums[i] + nums[j] + nums[k])) {
count++
}
}
}
}
return count
}
function isPrime(n) {
let i = 2
while(i <= Math.sqrt(n)){
if(n % i === 0) return false
i++
}
return true
}
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
JS Practice) 프로그래머스 Lv.1 : 실패율 (0) | 2023.08.23 |
---|---|
JS Practice) 프로그래머스 Lv.1 : 덧칠하기 (0) | 2023.08.22 |
JS Practice) 프로그래머스 Lv.1 : 모의고사 (0) | 2023.08.18 |
JS Practice) 프로그래머스 Lv.1 : 과일 장수 (1) | 2023.08.15 |
JS Practice) 프로그래머스 Lv.1 : 카드 뭉치 (0) | 2023.08.11 |