728x90
[문제]
[풀이코드]
function solution(nums) {
var answer = [];
//수가 소수인지 판별하기
const isPrime = (num) =>{
for(let i = 2; i <= Math.floor(Math.sqrt(num)); i++){
if(num % i === 0){
return false;
}
}
return true;
}
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++)
{
let num = nums[i] + nums[j] + nums[k];
if(isPrime(num)){
answer.push(num);
}
}
}
}
return answer.length;
}
[해설]
우선 조건이 3가지의 수를 모두 뽑아서 더하는 것이 조건이고, 해당하는 수가 소수이고 겹치지 않는 수의 총 갯수를 구하는 것이 목표이다.
그래서 우리는 우선 3가지의 수를 모두 더하게 3중 for문을 이용하였다. (0,1,2 ) , (0,1,3) ... -> 같은 순서로 진행하기 위해서 다음과 같이 i = 0 이고 j = i + 1, k = j + 1로 더해주어서, 각각의 값이 for문으로 돌면서 모든 값이 더해지게 하였다. 그리고 isPrime으로 해당한 더한 값이 소수인지 체크해주는 함수를 제작하였다.
소수는 그냥 2부터 해당하는 수 - 1까지 나눠지는 수가 없는 수에 해당하는데 굳이 자신의 제곱근 이하의 수는 체크할 필요가 없다. (제곱근 이후는 어짜피 나눠지지 않기때문) 그래서 2부터 해당하는 수의 제곱근까지 나눠지는 값이 없다면 true를 보내서 answer.push해주었고 해당하는 배열의 길이를 구해서 문제를 해결하였다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 기사단원의 무기 (0) | 2024.06.24 |
---|---|
[프로그래머스/JS] 덧칠하기 (0) | 2024.06.21 |
[프로그래머스/JS] 과일장수 (0) | 2024.06.18 |
[프로그래머스/JS] 카드뭉치 (0) | 2024.06.17 |
[프로그래머스/JS] 2016년 (0) | 2024.06.13 |