322. 소수 찾기

아현·2021년 11월 10일
0

Algorithm

목록 보기
346/400

프로그래머스



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;
}
profile
Studying Computer Science

0개의 댓글