
이거 permutations로 모든 경우의수 만들어놓고
하나씩 꺼내서 is_prime() 하면 되는거아님?
## set 써야할거같음 -> combination은 쓰면 안됨 => 17과 71 둘다 나오기 때문
from itertools import permutations
def is_prime_number(x):
    # 소수는 1보다 큰 자연수 중 1과 자신을 약수로 갖는 수
    if x == 1 or x == 0:                    
        return False
    
    for i in range(2, x):      # 소수는 1보다 큰 자연수 중에서 이므로 2부터 계산
        if x % i == 0:         # 나머지가 0이된다 = 나눠지는 수가 있다면 소수 아님!
            return False
    return True
def solution(numbers):
    answer = []
    arr = list(map(int,numbers))
    leng = len(numbers)
    
    for j in range(1, leng+1):
        for i in permutations(arr, j):
            candidate = int("".join(map(str,i)))
            if is_prime_number(candidate):
                answer.append(candidate)
                
    return len(set(answer))
print(solution("17"))
print(solution("011"))


from itertools import permutations
def solution(n):
    a = set()
    for i in range(len(n)):
        a |= set(map(int, map("".join, permutations(list(n), i + 1))))
    a -= set(range(0, 2))
    for i in range(2, int(max(a) ** 0.5) + 1):
        a -= set(range(i * 2, max(a) + 1, i))
    return len(a)
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