[Algorithm Problem] 소수 찾기-완전 탐색
문제
문제 설명
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
제한사항
numbers는 길이 1 이상 7 이하인 문자열입니다.
numbers는 0~9까지 숫자만으로 이루어져 있습니다.
"013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.
코드
function isPrime(num, result) {
if (num < 2) return false;
for (let i = 2; i <= Math.sqrt(num); i++)
if (num % i === 0)
return false;
result.push(num)
}
function powerSet (arr, tmp, result) {
if (arr.length > 0) {
for (let i = 0; i < arr.length; i++) {
let spliceArr = [...arr];
spliceArr.splice(i, 1);
powerSet(spliceArr, tmp + arr[i], result);
}
}
if (tmp.length > 0)
isPrime(Number(tmp), result);
};
function solution(numbers) {
let result = []
powerSet(numbers.split(''), '', result);
return [...new Set(result)].length;
}
풀이
순열이 있는 멱집합을 구하는 함수 내에 isPrime에 숫자값으로 넘겨 010
와 같은 값을 10
으로 인식하도록 한 뒤 소수일 경우에만 result에 삽입
그 후 중복된 값들은 제거하여 그 갯수를 반환
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
Author And Source
이 문제에 관하여([Algorithm Problem] 소수 찾기-완전 탐색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@idhyo0o/Algorithm-Problem-소수-찾기-완전-탐색저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)