소수 찾기
Python Code
def getNumbers(numbers,n): #numbers 리스트에서 n개의 숫자를 정렬하여 만들 수 있는 숫자를 전부 구하는 함수(순열 변형)
result = []
if n == 1:
for i in numbers:
result.append(i)
elif n > 1:
for i in range(len(numbers)):
temp = [i for i in numbers]
temp.remove(numbers[i])
for j in getNumbers(temp,n-1): #첫번째 숫자를 뽑고 남은 숫자들로 다시 순열을 만듦
result.append(numbers[i]*(10**(n-1))+j) #뽑은 숫자들을 자릿수를 맞춰 더하여 하나의 int를 만들고 result에 추가
return result
def checkPrimeNumber(a): #a가 소수인지 확인하는 함수
if a < 2:
return False
for i in range(2,a): #a를 2부터 a-1까지 나눴을 때 나눠 떨어지는 경우가 있는지 확인
if a%i == 0:
return False
return True
def solution(numbers):
answer = 0
list_int = list(map(int, list(numbers))) #문자열인 numbers를 각각의 int로 이루어진 리스트로 만듦
num = []
for i in range(len(list_int)): #한 자릿수부터 len(list_int) 자릿수까지 만들 수 있는 숫자를 모두 구함
num += getNumbers(list_int, i+1)
for i in list(set(num)): #num의 중복을 제거(맨 앞에 0이 오는 경우)
if checkPrimeNumber(i):
answer += 1
return answer