programmers - 소수만들기 with JS

@p-iknow 🎹 · November 19, 2019

Problem
Solve(내 풀이)
소수인지 판별하는 함수
주어진 배열안에서 3개를 뽑는 모든 경우(조합)
참고

Problem

문제 링크

프로그래머스-소수만들기

Solve(내 풀이)

소수인지 판별하는 함수

소수(prime number)의 정의: 소수는 자기 자신과 1 이외에 다른 어떤 수로도 나뉘어 지지 않은 수이다. 소수를 검증하기 위해서는 아래 로직이 필요하다. 또한 소수는 2를 제외하고 모두 홀수라는 규칙이 있다.

const isPrime = num => {
  if (num === 1) return false;
  if (num === 2) return true; 
  if (num % 2 === 0) return false; //2를 제외한 소수는 항상 홀수 

  // 소수는 홀수 이므로 짝수로 나누는 과정은 생략한다
  for (let i = 3; i < num; i+=2) {
    if (num % i === 0) { // 나누어지므로 소수가 아니다.
      return false;
    }
  }
  return true;
};

주어진 배열안에서 3개를 뽑는 모든 경우(조합)

반복문을 3개 중첩하면 3개를 뽑는 모든 경우를 구할 수 있다.

const solution = nums => {
  let result = 0;
  const { length } = nums;
  for (let i = 0; i < length - 2; i++) {
    for (let j = i + 1; j < length - 1; j++) {
      for (let k = j + 1; k < length; k++) {
        const sum = nums[i] + nums[j] + nums[k];
        if (isPrime(sum)) {
          result++;
        }
        console.log(`${nums[i]} + ${nums[j]} + ${nums[k]}`);
        console.log(nums[i] + nums[j] + nums[k], isPrime(sum));
      }
    }
  }
  return result;
};

참고

소년 코딩, 프로그래머스, 소수의 합, 소수 판별 알고리즘

@p-iknow 🎹
많은 것을 이해하고 싶습니다. 더 이해하기 위해 노력합니다.