[프로그래머스 level1] 소수 만들기

김예지·2021년 10월 13일
1

문제

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


문제 풀이

코드

function isPrime(num){
    if(num===1) return false;
    for(let i=2; i<parseInt(num/2); i++){
        if(num%i===0) return false;
    }
    return true;
}
function solution(nums) {
    let answer=0; //cnt
    const n=nums.length;
    for(let i=0; i<n-2; i++){
        for(let j=i+1; j<n-1; j++){
            for(let k=j+1; k<n; k++){
                if(isPrime(nums[i]+nums[j]+nums[k])) answer++;
            }
        }
    }
    return answer;
}

이론

  • 배열에서 세개의 다른 수를 뽑아서 만들 때의 코드(완전 탐색)
for(let i=0; i<n-2; i++){
        for(let j=i+1; j<n-1; j++){
            for(let k=j+1; k<n; k++){
                if(isPrime(nums[i]+nums[j]+nums[k])) answer++;
            }
        }
    }
  • 소수 판별
function isPrime(num){
    if(num===1) return false;
    for(let i=2; i<parseInt(num/2); i++){
        if(num%i===0) return false;
    }
    return true;
}
  • isPrime(2)를 했을때, 즉 2가 소수인지 판별했을 때 true가 나온다. isPrime(2)에서의 for문은 다음과 같이 진행된다. 아무리 초기값이라고 하더라도, 두번째에 나오는 조건을 초기값이 만족하지 못한다면 for문은 넘어간다.
profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 25일

10/26
조합 구하기

답글 달기