소수 찾기

김현민·2021년 9월 24일
0

Algorithm

목록 보기
94/126
post-thumbnail

내 코드


// 조합을 구하는 함수 (중복제거)
function comb(input) {
  let set = new Set()
  numOfCase(input, "")
  function numOfCase(arr, str) {
    if (arr.length) {
      for (let i = 0; i < arr.length; i++) {
        let copy = [...arr]
        copy.splice(i, 1)
        numOfCase(copy, str + arr[i])
      }
    }
    if (str > 0) set.add(Number(str))
  }
  return Array.from(set)
}


// 소수 판별 함수
function prime(nums) {

  let res = new Array(nums.length).fill(true)

  let cnt = 0
  for (let i = 0; i < nums.length; i++) {
    let number = nums[i]
    if (number === 2) {
      res[i] = true
      continue
    } else if (number === 1) {
      res[i] = false
      continue
    }
    for (let j = 2; j <= Math.floor(Math.sqrt(number)); j++) {
      if (number % j === 0) res[i] = false
    }
  }

  res.map((v) => (v === true ? cnt++ : cnt))
  return cnt
}


function solution(numbers) {
  const nums = numbers.split("").map((v) => Number(v))
  const combiRes = comb(nums)
  const answer = prime(combiRes)
  return answer
}

solution("17")
  1. 조합(중복제거)을 구한다.
  2. 각 원소에 대해 소수 판별 함수를 실행한다.
profile
Jr. FE Dev

0개의 댓글