프로그래머스 - 소수 찾기 [ 못품 ]

Lumi·2021년 12월 9일
0

알고리즘

목록 보기
58/59
post-thumbnail
function solution(numbers) {
  let arr = numbers.split("");
  let store = [];

  arr = permutation(arr);

  for (let i = 0; i < arr.length; i++) {
    let x = Number(arr[i]);
    let point = 0;
    for (let j = 2; j < Math.floor(x / 2); j++) {
      if (x % j === 0) {
        point++;
      }
    }

    if (point === 0 && store.indexOf(x) === -1) {
      store.push(x);
    }
  }

  let answer = store.length;

  let arr2 = numbers.split("");

  for (let i = 0; i < arr2.length; i++) {
    let x = Number(arr2[i]);
    let point = 0;
    if (!(x < 2)) {
      for (let j = 2; j < Math.floor(x / 2); j++) {
        if (x % j === 0) {
          point++;
        }
      }
      if (point === 0) {
        answer++;
      }
    }
  }

  return answer;

  function permutation(arr, store = [], idx = 0) {
    const str = arr.join("");

    if (idx === arr.length - 1) {
      store.push(str);
      return;
    }

    for (let i = idx; i < arr.length; i++) {
      let temp = arr[idx];
      arr[idx] = arr[i];
      arr[i] = temp;
      permutation(arr, store, idx + 1);

      arr[i] = arr[idx];
      arr[idx] = temp;
    }

    return store;
  }
}

어... 기본적으로 예시로 주어지는 테스트들은 통과를 하였지만 최종 테스트에서 합격을 하지 못했다.

permutaion함수는 쉽게 말해서 경우의 수를 도출 해낸다.

012가 주어진다면

012, 021, 102, 120, 210, 201

과 같이 도출이 된다.

이후 해당값을 숫자로 바꾸어서 소수를 판별하고

0,1,2도 각자 소수인지를 판별해야 하기 때문에 판별을 하는 로직으로 진행을 하였다.

하지만... 문제를 해결하지 못했다 ㅠㅠ

어떠한 테스트 케이스에서 실패햇는지를 모르겠어가지고 문제점을 찾지 못하엿다..ㅠ

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글