JavaScripts 문제

문제 58. 소수 만들기(난이도 10)

kagan-draca 2024. 8. 19. 12:59

 

nums.sort((a,b)=> a - b).forEach((element, index) =>

{

})

nums에 있는 배열을 오름차순 정렬하고,

forEach문으로 배열의 요소를 순회했다.

 

forEach문 안에서는

 

for(let i = index + 1; i < nums.length - 1; i++)
{
   for(let j = i + 1; j < nums.length; j++)
   {
       let temp = element + nums[i] + nums[j]
       if(isPrime(temp)) count++;
   }

}

반복문을 작성해

element, num[i], nums[j]를

더할 수 있게 만들어줬다.

그렇게 더해진 숫자 temp는

isPrime 함수의 input으로 들어가

 

function isPrime(num) 
{
    for (let i = 2; i <= Math.sqrt(num); i++) 
    {
        if (num % i === 0) return false;
    }
    return true;
}

(소수를 검증하는 부분을 만드는게 힘들었습니다...)

 

소수이면 true소수가 아니면 false를 반환 받을 수 있게 만들었다.

 

if(isPrime(temp)) count++;

소수이면 count를 증가시켜줬다.

 

제출한 코드 : 

 

function isPrime(num) 
{
    for (let i = 2; i <= Math.sqrt(num); i++) 
    {
        if (num % i === 0) return false;
    }
    return true;
}
function solution(nums) 
{
    let count = 0;
    nums.sort((a,b)=> a - b).forEach((element,index)=>
    {
        for(let i = index + 1; i < nums.length - 1; i++)
        {
            for(let j = i + 1; j < nums.length; j++)
            {
                let temp = element + nums[i] + nums[j]
                if(isPrime(temp)) count++;
            }
        }
    })
    return count
}