프로그래머스 소수 찾기 JavaScript

김건호·2021년 10월 7일
0

문제링크

function permutation(arr, selectNum) { // 순열을 구하는 함수
  let result = [];
  if (selectNum === 1) return arr.map((v) => [v]);

  arr.forEach((v, idx, arr) => {
    const fixer = v;
    const restArr = arr.filter((_, index) => index !== idx);
    const permuationArr = permutation(restArr, selectNum - 1);
    const combineFixer = permuationArr.map((v) => [fixer, ...v]);
    result.push(...combineFixer);
  });
  return result;
}

function isPrime(num) { // 소수 판별 함수
  if(num == 0 || 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; 
}

function solution(numbers) {
    var answer = 0;
    var num=[...numbers];
    var temp=[];
    for(var i=1 ; i<=num.length ; ++i) {
        permutation(num,i).forEach((element) => {
            temp.push(parseInt(element.join('')));
        });
    }
    const uniqueArr = temp.filter((element, index) => {
        return temp.indexOf(element) === index;
    });
    for(var i =0 ; i<uniqueArr.length ; ++i) {
        if(isPrime(uniqueArr[i]))
            ++answer;
    }
    return answer;
}

이 문제의 조건은 순열을 구한다는 뜻과 같다.
순열을 구하여 소수로 판별하면 된다.

순열 자료

배열에서 중복을 제거하는 법 (filter)

자바스크립트 ... 문법

배열요소에 대해 각각 실행하는 함수 forEach

profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글