12. 프로그래머스(1단계) - 소수 만들기

성훈·2021년 8월 3일
0

Algorithm

목록 보기
12/61
post-thumbnail

📌 문제의 조건

  1. 숫자가 있는 배열이 주어지고, 그 배열에서 숫자 세개를 더 했을때 생기는 소수의 갯수를 반환한다.

제한사항 🤔

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

📌 풀이

풀이 👨‍💻

function solution(nums) {
    let countPrime = 0;
    const isPrime = (num) => {
        let count = 0;
        for(let i = 0; i <= num; i++){
            if(num % i === 0){
                count++
            }
        }
        if(count === 2){
            return true;
        }
        return false;
    }
    
    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++){
                if(isPrime(nums[i]+nums[j]+nums[k])){
                    countPrime++;
                }
            }
        }
    }
    
    
    return countPrime;
}

📌 리뷰

소수를 검증하는 내부 함수 isPrime을 만들고 반복문을 세개 겹쳐서 세개의 숫자를 더했을때 소수인지 검증하고, 소수라면 countPrime에 +1 했다.

처음에 반복문을 세개 겹치는 것에 대해 거부감을 느껴서 최대한 안써보려고 했는데 결국 써버렸다.
그런데 아 이게 맞나? 하면서 통과를 했지만 다른 사람들도 다 비슷하게 반복문을 돌려서 뭔가 안심했다.

📌 문제 출처

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges#

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글