Javascript

[프로그래머스 Level1] 소수 만들기 - 나의 코드(Javascript)

728x90
반응형

🚨문제

https://programmers.co.kr/learn/courses/30/lessons/12977?language=javascript 

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

🔅예제 이해

숫자의 배열에서 3개를 골랐을 때 소수가 될 경우를 구합니다.

 

 

☺️나의 코드

Math.floor(), Math.sqrt()

function solution(nums) {
    
    function isPrime(e){
        //2은 무조건 소수이다.
        if(e === 2){
            return true;
        }
        //소수인지 검증
        //소수인지를 확인하기 위해선 제곱근까지만 확인해도 된다.(꼭 필요한건 아니지만 시간복잡도에 이로움)
        for(let i = 2; i <= Math.floor(Math.sqrt(e)); i++){
            if(e % i === 0){
                //나누어지는게 있으니 소수가 아니다.
                return false;
            }
        }
        //위에서 return되는게 없는 경우 소수이다.
        return true;
    }
    
    var answer = 0;
    for(let i = 0; i<nums.length; i++){
        for(let i2 = i+1; i2<nums.length; i2++){
            for(let i3 = i2+1; i3<nums.length; i3++){
                let result = isPrime(nums[i] + nums[i2] + nums[i3]);
                if(result){
                     answer ++;
                }
            }
        }
    }
    return answer;
}

 

 

❗️ 풀이 순서

순서에 상관없는 숫자 3개 선택되어야 하기에, 반복문을 세 개를 쓴다.

경우의 수로 선택된 숫자들의 합이 소수인지 확인한다. 

  • 2는 무조건 소수이다.
  • 소수는 제곱근 이하의 숫자로 나누었을때 나머지가 나오지 않는다.

소수인 경우, 더한다.

 


👍우수 코드

내 코드와 유사하여 제외

 

 

❤️배운 점

소수의 정의를 다시 공부했다. 소수를 체크하는 방법을 외워두어야겠다.
728x90
반응형