코딩연습 58 (소수 만들기)

윤여빈·2024년 10월 1일

소수 만들기

[문제]

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

[풀이]

function solution(nums) {
    // 배열의 3개 수를 더하여 나오는 모든 값을 담기
    const numbers = [];
    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++) {
                    numbers.push(nums[i] + nums[j] + nums[k]);
            }
        }
    }
    console.log(numbers)
    // numbers에서 소수가 몇개인지 찾기
    const answer = numbers.filter((num) => {
        for (let i = 2; i < num; i++) {
            if (num % i === 0) {
                return false;
            }
        }
        return true;
    })
    console.log(answer)
    return answer.length
}

[코드 리뷰]

3중 for문을 통해 인자로 들어오는 배열의 서로 다른 3개의 요소를 더한 모든 경우의 값을 담아주었다.
filter 메서드를 통해 소수인 경우만 answer 값에 담아
answer의 길이를 반환하여주었다.

P.S 당연히 중복되는 소수는 제거해야 되는 줄 알고
친히 find 메서드 통해서 제거해주고 제출했더니 안 되더라...
왜 안 되는지 몰라서 1시간을 혼자 코드 붙잡고 고민했는데
설마 하고 지워보니 되네... 진짜 허탈한 문제였다...

0개의 댓글