728x90

문제


https://programmers.co.kr/learn/courses/30/lessons/12977

 

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

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

programmers.co.kr

 

코드


function solution(nums) {
    let answer = 0;
    const len = nums.length;
    
    for (let i=0; i<len; i++) { //배열 안에서 서로다른 3개의 수를 더하기
        for (let j=i+1; j<len; j++) {
            for (let k=j+1; k<len; k++) {
                let sum = nums[i] + nums[j] + nums[k];

                if (isPrime(sum)) { //소수라면 정답 count++
                    answer++;
                }
            }
        }
    }

    function isPrime(sum) {
        if (sum < 2) return true;
        for (let i=2; i<sum; i++) { //1외에 숫자 하나라도 나누어떨어지면 소수탈락
            if (sum % i == 0) return false;
        }
        return true;
    }

    return answer;
}

 

후기


  • 배열에서 서로 다른 3개의 수를 뽑기 위해서는 3중 for문을 써야 한다는 것을 깨달음
  • n중 for문이 되어버리면 이게 맞나 하고 의심부터 하게 되는데 다행히 다른 분들의 코드에서도 3중 for문이 많아서 안심했다

+ Recent posts