반응형
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=javascript
정답 풀이
아래 두개의 함수를 작성하면 된다
numbers로 순열을 구하는 함수
해당 숫자가 소수인지 확인하는 함수
정답 코드
function solution(numbers) {
let answer = new Set()
for(let i=1; i<=numbers.length; i++){
let arr = numbers.split('')
let candidates = getPermutation(arr, i)
let format = candidates.map(el => el.join(''))
let prime = check(format)
prime.forEach(el => answer.add(el))
}
return answer.size
}
//들어온 문자열 배열 중에
//-앞에 0 빼고
//-소수라면 해당 배열로 넣기
const check = (arr) => {
let result = [];
arr = arr.map(v => +v)
for(let i=0; i<arr.length; i++){
if(isPrime(arr[i])) result.push(arr[i])
}
return result
}
const isPrime = (num) => {
if(num === 0 || num === 1) return false;
else if(num === 2 || num === 3) return true;
else if(num%2 === 0) return false
for(let i=3; i<= Math.sqrt(num); i+=2){
if(num%i === 0) return false;
}
return true;
}
const getPermutation = (arr, selectNum) => {
let results = [];
if(selectNum === 1)return arr.map(v => [v])
arr.forEach((fixed, idx, origin) => {
const rest = [...origin.slice(0,idx), ...origin.slice(idx+1)]
const permutations = getPermutation(rest, selectNum - 1)
const attached = permutations.map(permu => [fixed, ...permu])
results.push(...attached)
})
return results;
}
//소수 판별 함수
//순열 함수
반응형
'알고리즘 문제 풀기' 카테고리의 다른 글
백준 11066: 파일 합치기 - javascript(dp) (0) | 2024.09.30 |
---|---|
백준 16987: 계란으로 계란치기 - javascript(백트래킹, 완전탐색) (0) | 2024.09.30 |
백준 4256 : 트리 - javascript(트리) (1) | 2024.09.28 |
백준 2225 : 합분해 - javascript(dp) (1) | 2024.09.28 |
백준 1941: 소문난 칠공주 - javascript(DFS/BFS) (0) | 2024.09.28 |