[프로그래머스] 코딩테스트 연습 - 39

krkorklo·2022년 2월 7일
0

프로그래머스

목록 보기
39/78

level 2 - 소수 찾기

각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

입출력 예시
numbers : "17"
-> 3

function solution(numbers) {
    var answer = 0;
    var split_arr = numbers.split("");
    var visited = new Array(split_arr.length).fill(false);
    var num_set = new Set();
    
    for (var i=1; i<=numbers.length; i++) {
        dfs(0, '', i)
    }
    function dfs(size, sum, len) {
        if (size == len) {
            if (isPrime(Number(sum))) {
                num_set.add(Number(sum));
            }
            return;
        }
        split_arr.forEach((s, i) => {
            if (!visited[i]) {
                visited[i] = true;
                dfs(size + 1, sum + s, len);
                visited[i] = false;
            }
        })
        return;
    }
    function isPrime(n) {
        if (n <= 1) return false;
        else if (n == 2) return true;
        for(var i=2; i<=Math.sqrt(n); i++) {
            if (n % i == 0) return false;
        }
        return true;
    }
    return answer = num_set.size;
}

앞 문제에서 dfs를 사용 못한 한을 풀었다.

근데 set에 어떤 값이 있는지 출력해보려고 하는데 자꾸 아무것도 안 나와서 뭐가 문젠지 한참 생각했다.
근데 그냥 출력창에 안 나오는 거더라,, 제대로 한 거였음.
하항

0개의 댓글