from itertools import permutations
def solution(numbers):
answer = 0
number_list = list(numbers)
permL = []
for i in range(1, len(numbers) + 1):
permL += list(permutations(number_list, i))
arr = [int(("").join(p)) for p in permL]
arr = list(set(arr))
for i in arr:
if isPrime(i):
answer += 1
return answer
def isPrime(a):
if a <= 1:
return False
i = 2
while i <= a // 2:
if a % i == 0:
return False
i += 1
return True
모든 순열을 생성하는 데 어떻게 해야할 지 막막해서 찾아봤더니 permutations를 쓸 수 있었다. 직접 perm 함수를 만들수도 있지만 라이브러리를 쓰기로 했다.
perm 함수로 모든 경우의 수를 만들고 각각을 isPrime함수로 소수 여부를 판단하여 answer을 증가시켰다.