알림
본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12977
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다.숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
코드
function isPrime(n){
for(let i = 2; i < n; i++){ // 본인 제외 나눴을 때 0이면 false
if(n % i === 0) return false
}
return n >= 2; // 1 제외 숫자 return
}
function solution(nums) {
let answer = 0;
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++){ // 세 번째
let sum = nums[i] + nums[j] + nums[k]; // 숫제 3개 더하여
if(isPrime(sum) == 1) answer += 1; // 약수면 개수 누적
}
}
}
return answer; // 정답 return
}
풀이
약수인지 아닌지 검사하는 함수를 한 개 더 만들었습니다.
해당 함수에 숫자 세 개의 합을 매개변수로 보내면 약수인지 아닌지 알 수 있고, 약수라면 개수를 체크해 줍니다.
우린 배열에서 세 개의 숫자를 가져와 이 세 개를 더해야 합니다.
따라서 반복문을 세 번 돌렸고, 한 번 돌릴 때마다 직전에 고른 숫자와 겹치지 않아야 하므로 초기값을 이전 반복문보다 +1만큼 지정해줘 각각 다른 숫자 세 개를 구하여 더할 수 있도록 합니다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 2016년(JavaScript) (0) | 2022.08.02 |
---|---|
[Programmers] 소수 찾기(JavaScript) (0) | 2022.08.02 |
[Programmers] K번째수(JavaScript) (0) | 2022.07.29 |
[Programmers] 최소직사각형(JavaScript) (0) | 2022.07.28 |
[Programmers] 문자열 내림차순으로 배치하기(JavaScript) (0) | 2022.07.27 |
댓글