[Python][프로그래머스][Level2] 소수찾기

[Python][프로그래머스][Level2] 소수찾기

코드

from itertools import permutations as pers
def solution(numbers):
    ans=[]
    for num in range(1,len(numbers)+1):
        for per in pers(numbers,num):
            ans.append(int(''.join(per)))
    ans=list(set(ans))
    
    check=[1]*(max(ans)+1)
    check[0],check[1]=0,0
    for i in range(2,len(check)//2):
        if check[i]==0:
            continue
        n=2
        while n*i<len(check):
            check[n*i]=0
            n+=1
            
    answer=0
    for i in ans:
        if check[i]:
            answer+=1
    return answer

순열을 활용해 문제를 풀었다.

numbers에 있는 숫자로 만들 수 있는 숫자들을 permutation으로 순열로 만들었고

에라토스테네스의 체로 소수를 판별하여 return 했다.

Discussion and feedback