Koala - 12기/코딩테스트 준비 스터디

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

jeonyoungseo 2023. 9. 10. 19:43

풀이

해당 문제의 입출력이 매우 작아 (numbers는 길이 1 이상 7 이하인 문자열) 브루트포스로 풀 수 있다! permutations와 파이썬 join함수를 이용하여 가능한 모든 숫자 배열을 만들어낼 수 있었다. permutation은 1,2,3이 있다면 12, 21 이렇게 순서가 바뀐 경우도 모두 가져올 수 있다.

코드

 from itertools import permutations as pm

N=10000000
primes=[True for _ in range(N)]
primes[0]=False
primes[1]=False
for i in range(2,N):
    if primes[i]: #2같은 소수를 만나면
        for j in range(i+i,N,i):
            primes[j]=False #
def solution(numbers):
    Num_List=list(numbers)
    ans_set=[]
    for j in range(1,len(numbers)+1):
        s=''
        for i in list(pm(Num_List,j)):
            s=''.join(i)
            s=int(s)
            # print(s)
            if primes[s]: 
                ans_set+=[str(s)]
    ans_set=set(ans_set)
    print(ans_set)
    answer = len(ans_set)
    return answer