프로그래머스[Level 2] 소수 찾기

bkboy·2022년 5월 25일
0

문제

제한사항

입출력 예

풀이

// 소수 판별 함수
function isPrime(num) {
  if (num <= 1) {
    return false;
  }
  if (num == 2) {
    return true;
  }

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

const solution = (numbers) => {
  let mySet = new Set();
  let splitNumbers = numbers.split('');
  let visited = Array.from(Array(numbers.length), () => 0);
  let tmp = [];
  const dfs = (L) => {
    if (L === splitNumbers.length) {
      return;
    } else {
      for (let i = 0; i < splitNumbers.length; i++) {
        if (!visited[i]) {
          visited[i] = 1;
          tmp.push(splitNumbers[i]);
          mySet.add(parseInt(tmp.join('')));
          dfs(L + 1);
          tmp.pop();
          visited[i] = 0;
        }
      }
    }
  };
  dfs(0);
  let answer = [...mySet].filter((e) => isPrime(e)).length;

  return answer;
};
  • 깊이 우선 탐색을 이용했다.
  • set을 이용해 중복을 제거했고, filter를 이용해 소수인 것만 뽑아냈다.
profile
음악하는 개발자

0개의 댓글