프로그래머스 - 소수찾기 (javascript)

김태은·2020년 1월 16일
0

문제풀이

목록 보기
5/12
// 재귀함수를 사용해서 풀어야함!!
function solution(numbers) {
    var num_array = numbers.split(''); // 배열화

    var answer = 0;
    var nums = new Set(); // 중복체크 (ex. 0 1 1 에서)
    
    solution2(num_array,''); // 배열과 빈 문자열을 넣어줌

    function solution2(first, second) {
        if (second.length > 0) { // 뒤에서는 숫자가 소수인지 판단
            if (nums.has(Number(second))=== false) {
                nums.add(Number(second));
                console.log(Number(second))
                if (chkPrime(Number(second))) {
                    answer++;
                }
            }
        }
        if (first.length > 0) { // 앞에서는 배열을 쪼개서 모든 숫자를 비교할 수 있도록 함
            for (var i = 0; i< first.length; i++) {
                var t = first.slice(0)
                t.splice(i,1); // 반복문을 돌려서 first의 모든 값들을 뒤로 돌려줌
                console.log(t,second + first[i]);
                solution2(t,second + first[i]);
            }
        }
    }

    function chkPrime(num) {
        if (num < 2) return false;
        if (num === 2) return true;
            for (var i = 2; i <= Math.sqrt(num); i++) {
                if (num%i===0) return false;
            }
        return true;
    }
    return answer;
}
console.log(solution("123"))
// 이해가 안되면 123의 예로 알고리즘 경로를 파악해볼 것.
profile
프론트엔드 개발 공부블로그

1개의 댓글

comment-user-thumbnail
2021년 11월 4일

설명이 너무 좋습니다. 감사합니다.!

답글 달기