DevKim

[Python] 프로그래머스 Lv.2 - 소수 찾기 본문

알고리즘 PS

[Python] 프로그래머스 Lv.2 - 소수 찾기

on_doing 2021. 2. 11. 20:40
728x90

[ 알고리즘 ]

완전탐색,구현

 

[문제 접근]

주어진 numbers로 만들 수 있는 순열을 구해서 ( [1,2], [2,1] 은 다른 것임 ) 소수를 구할 땐 효율성을 위해 에라토스테네스의 체를 이용하여 구현하였다

 

 

[코드]

from itertools import permutations
def solution(numbers):
    answer = 0
    n=len(numbers) #문자열
    num=list(numbers) #리스트
    result=[]
    
    #해당 숫자 조합으로 만들 수 있는 모든 숫자 조합
    List=[]
    for i in range(1,n+1):
        List.append(set(permutations(num,i)))
        
    #체를 이용하여 해당수로 만들 수 있는 최댓값까지의 소수들 찾기
    num.sort(reverse=True)
    Max=''.join(map(str,num))
    Max=int(Max)
    
    find=[0]*(Max+1)
    find[0]=1
    find[1]=1
   
    for i in range(2,int(Max**(0.5))+1):
        if find[i]==0: #안지워진 소수이면
            for j in range(2*i,Max+1,i):
                find[j]=1 #배수들 모두 지움
                
    
    #소수인지 찾아주기
    for i in range(len(List)):
        L=List[i]
        for j in L: 
            j=int(''.join(j))
            if find[j]==0:
                result.append(j)
                
    return len(set(result))
728x90
Comments