프로그래머스 소수구하기

홍왕열·2022년 4월 22일
0
post-thumbnail

머리가 안 돌아간다.
그냥 보자마자 멍하니 쳐다보다가 손도 못 댄....

그런데 막상 보면 그렇게 어려운 문제는 아니다.
근데 풀지를 못하는 게 함정.
제발.........

function solution(nums) {
   let result = 0
    //3개를 더할 수 있는 경우의 수 구하기
    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])) result++
            }
        }
    }
    return result
}

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

맨 위 함수 같은 경우는 3개를 더해서 소수를 만드는 경우의 수를 구하고 이걸 소수인지 판단하는 함수에 인자로 넣어서 구하는 방식이다.
여기서 isPrime이 소수인지 판단하는 함수다.
중요한 점은 Math.sqrt를 이용하여 굳이 자기 자신까지 나누지 않아도 제곱근(제곱해서 그 수가 되는 것, 즉 루트를 씌운 것)까지만 보아도 그 이상 볼 필요가 없기 때문에 효율성이 훨씬 좋다.

Math.sqrt()

제곱근을 구하는 함수

profile
코딩 일기장

0개의 댓글