프로그래머스
1. Python
import itertools
import math
def isPrime(num):
if num <= 1: return False
if n==2 or n==3: return True
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0: return False
return True
def solution(numbers):
s = set()
number = [n for n in numbers]
for i in range(1,len(numbers) + 1):
for j in itertools.permutations(number, i):
x = int("".join(j))
if isPrime(x): s.add(x)
return len(s)
재귀
primeSet = set()
def isPrime(number):
if number in (0, 1):
return False
for i in range(2, number):
if number % i == 0:
return False
return True
def makeCombinations(str1, str2):
if str1 != "":
if isPrime(int(str1)):
primeSet.add(int(str1))
for i in range(len(str2)):
makeCombinations(str1 + str2[i], str2[:i] + str2[i + 1:])
def solution(numbers):
makeCombinations("", numbers)
answer = len(primeSet)
return answer
2. C++
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <unordered_set>
using namespace std;
int isPrime(int num){
if(num <= 1) return false;
if(n==2 || n==3) return true;
for(int i = 2; i <= sqrt(num); i++){
if(num % i == 0) return false;
}
return true;
}
int solution(string numbers) {
unordered_set<int> s;
int x = 0;
sort(numbers.begin(), numbers.end());
do{
for(int i = 1; i < numbers.length() + 1; i++){
x = stoi(numbers.substr(0, i));
if(isPrime(x)) s.insert(x);
}
}while(next_permutation(numbers.begin(), numbers.end()));
return s.size();
}
3. JavaScript
function solution(numbers) {
let answer = new Set();
const number = numbers.split("");
dfs(number, '');
function isPrime(num) {
if (num <= 1) return false;
if(n==2 || n==3) return true;
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
function dfs(number, n) {
if (number.length) {
for (let i = 0; i < number.length; i++) {
const temp = [...number];
temp.splice(i, 1);
if (isPrime(parseInt(n + number[i]))) {
answer.add(parseInt(n + number[i]))
}
dfs(temp, n + number[i])
}
}
}
return answer.size;
}