류림스 공간

[🤬알고리즘 문제 풀이] Level 1 소수 만들기 자바스크립트 본문

알고리즘 문제 풀이/프로그래머스

[🤬알고리즘 문제 풀이] Level 1 소수 만들기 자바스크립트

ryurim 2022. 3. 24. 23:49
반응형

문제 설명

주어진 숫자 중 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
반응형
Comments