프로그래머스 알고리즘(소수 찾기)

Hyor·2023년 10월 17일
0
post-custom-banner

프로그래머스 알고리즘(소수 찾기)

https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=javascript

function solution(numbers) {
  const numberArray = numbers.split("");
  const set = new Set();
  recursive(numberArray, "");

  function recursive(nums, str) {
    if (str.length > 0) {
      const num = Number(str);
      if (!set.has(num) && chkPrime(num)) {
        set.add(num);
      }
    }
    if (nums.length > 0) {
      nums.forEach((e, i) => {
        const t = nums.filter((_n, index) => i !== index);
        recursive(t, str + e);
      });
    }
  }

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

  return set.size;
}

recursive

재귀적으로 호출되며 모든 가능한 숫자 조합을 생성하고 소수 여부를 검사한다. 아직 처리해야 할 숫자(nums 배열)와 지금까지 만들어진 숫자(str 문자열)을 인자로 받는다

chkPrime

소수 여부를 확인하는 함수이다

후기

이 문제는 결국 못풀어낸 문제였다 그래서 다른 사람 풀이를 가져와 조금 수정했다.

profile
개발 노트
post-custom-banner

0개의 댓글