Problem Solving/프로그래머스

[프로그래머스/JavaScript] 소수 찾기

세고래 2022. 12. 15. 15:17

https://school.programmers.co.kr/learn/courses/30/lessons/42839

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1) 풀이

소수 찾는 알고리즘 + dfs로 순열 풀듯이 푸는 방식을 사용했다

소수 찾는 알고리즘은 이전에 풀어본 적이 있었고 순열 풀이도 예전 휴학때 해본 적 있으나 잊고 살다가

코테 준비한다고 급하게 풀어보는 중..

나중에 참고하려고 참고했던 자료를 첨부한다

자료 보면 풀이 이해가기 때문에 따로 적지는 않음! 

2) 최종 소스코드
function solution(numbers) {
  let answer = 0;
  const done = [];
  const arr = [...numbers];
  const select = Array.from({ length: arr.length }, () => false);
  function prime(k) {
    if (done.includes(k) || k === 0 || k === 1) return;
    for (let i = 2; i * i <= k; i++) {
      if (k % i === 0) return;
    }
    answer++;
    done.push(k);
  }
  function dfs(count, n) {
    prime(Number(n));
    if (count >= arr.length) return;
    for (let i = 0; i < arr.length; i++) {
      if (select[i]) continue;
      select[i] = true;
      dfs(count + 1, n + arr[i]);
      select[i] = false;
    }
  }

  dfs(0, "");
  return answer;
}
3) 참고자료

https://rimkongs.tistory.com/115

 

[개념] 조합, 순열 + DFS,BFS

[순열, 조합] 순열이라는 것은 주어진 수열에서 순서에 따라 결과가 달라지는 방식을 순열이라고 한다. 말 그대로, 순서가 존재하는 열 이라는 것이다. 즉 순열에서 { 1, 2, 3 } 과 { 1, 3, 2 } , { 2, 1, 3

rimkongs.tistory.com

https://myjamong.tistory.com/139

 

소수(Prime Number) 구하기 효율적 알고리즘 :: 코드자몽

소수(Prime Number) 소수는 자신보다 작은 두개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다. ex) 5는 5*1 또는 1*5로 수를 곱합 결과를 적는 유일한 방법이 그 수 자신을 포함하기 때문에 5는

myjamong.tistory.com

 

728x90