티스토리 뷰

목차


    반응형

    문제 설명

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

    제한사항
    • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
    • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

    입출력 예


    nums result
    [1,2,3,4] 1
    [1,2,7,6,4] 4

    입출력 예 #1
    [1,2,4]를 이용해서 7을 만들 수 있습니다.

    입출력 예 #2
    [1,2,4]를 이용해서 7을 만들 수 있습니다.
    [1,4,6]을 이용해서 11을 만들 수 있습니다.
    [2,4,7]을 이용해서 13을 만들 수 있습니다.
    [4,6,7]을 이용해서 17을 만들 수 있습니다.

     


    문제 풀이

     

    음 그러니까 3개의 숫자를 더해서 만들어지는 소수의 개수를 반환하라는거잖아 ?!

    오랜만에 다시 알고리즘 문제를 풀어보려니까 여전히 어렵다.

    바로 구글선생님께 물어보러 gogo

     

    👉 주어진 nums 배열의 원소 3개를 골라 구할 수 있는 모든 합을 구한다.

    👉 새로운 배열에 이 합들을 넣어버린다!

    👉 소수인지 아닌지 판별해준다.

    👉 소수라면 count ++해준다

     

    힌트만 얻어왔다. ㅎ

    내가 한번 해보자 이번엔 !!!!!

     

    function solution(nums) {
        let answer = 0;
        const len = nums.length;
        
        for(let i = 0; i < len; i++) {
            for(let j = i+1; j < len; j++) {
                for(let k = j+1; k < len; k++) {
                    const sum = nums[i] + nums[j] + nums[k];
                    if(isPrime(sum)) answer++;
                }
            }
        }
        return answer;
    }
    
    function isPrime(sum) {
        for(let i = 2; i < sum; i++)
        if(sum % i === 0) return false;
        return sum > 1;
    }

    는 무슨 그냥..복붙해왔다.

    아래 isPrime은 소수 구하는 함수란다..

     

    아 울고싶다.

    728x90
    반응형