소수 구하기

성석민·2022년 5월 18일
1

알고리즘

목록 보기
62/72
post-thumbnail

github 전체코드

문제

프로그래머스 - 소수 구하기

풀이 과정

소수 판별
1. 1보다 같거나 작으면 소수가 아니다.
2. 2로 나누어 떨어지는 수 중 2는 소수 나머지는 소수가 아니다.
3. 주어진 num의 제곱근이 3, 5 ... 홀수로 나눠진다면 소수가 아니다.

solutionA
1. 문제에서 3개의 수를 더했을 때를 가정했기에 3중 반복문 순회
2. i는 0부터, j는 i+1부터, k는 j+1부터 시작
3. nums의 i, j, k를 더한 수가 소수인지 아닌지 판별 후 맞다면 count 증가

const isPrime = (num) => {
  if (num <= 1) return false;
  else if (num % 2 === 0) return num === 2 ? true : false;

  for (let i = 3; i <= Math.sqrt(num); i += 2) {
    if (num % i === 0) return false;
  }

  return true;
};

const solutionA = (nums) => {
  let answer = 0;

  for (let i = 0; i < nums.length - 2; i++) {
    const first = nums[i];

    for (let j = i + 1; j < nums.length - 1; j++) {
      const second = nums[j];

      for (let k = j + 1; k < nums.length; k++) {
        const third = nums[k];

        const sum = first + second + third;

        isPrime(sum) && answer++;
      }
    }
  }

  return answer;
};

const nums = [1, 2, 7, 6, 4];
const testA = solutionA(nums);
console.log(testA);

틀린 부분이 있거나 보충해야 할 내용이 있다면 댓글이나 DM(sungstonemin)으로 알려주시면 감사하겠습니다😄

profile
기록하는 개발자

0개의 댓글