📖 문제

📝 풀이 과정
- 우선 에라토스테네스의 체로 소수들을 걸러둔다.
- 숫자카드를
length
의 길이로 조합해서 소수가 되는 것들을 반환해주는 함수를 만든다. (find_prime
)
- permutations 모듈을 사용해서
length
길이의 숫자들의 순열을 구한다.
- 만든 숫자가 소수인지 검사해서 소수이면 리스트
prime
에 담는다.
- prime을 리턴
- 숫자카드를 조합할 길이별로
find_prime
함수를 호출해서 그 리턴값을 set answer
에 담는다.
⌨ 코드
from itertools import permutations as p
def find_prime(string, length, isPrime):
prime = []
for number in list(p(string, length)):
number = int(''.join(number))
if isPrime[number]:
prime.append(number)
return prime
def solution(numbers):
answer = set()
isPrime = [True] * 10000000
isPrime[0] ,isPrime[1] = False, False
for i in range(2, int(1000000 ** 0.5)):
if isPrime[i]:
j = 2
while i * j < 10000000:
isPrime[i*j] = False
j += 1
for i in range(1, len(numbers)+1):
answer.update(find_prime(numbers, i, isPrime))
return len(answer)