각 종이 조각에 적힌 숫자가 적힌 문자열 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에 어떤 값이 있는지 출력해보려고 하는데 자꾸 아무것도 안 나와서 뭐가 문젠지 한참 생각했다.
근데 그냥 출력창에 안 나오는 거더라,, 제대로 한 거였음.
하항