본문 바로가기
카테고리 없음

소수찾기 (프로그래머스: level2)

by 볼록티 2020. 12. 27.
728x90
반응형

소수를 찾는 방법은 결국 한 숫자 보다 작은 숫자들을 한번씩 죽 봐야한 다는 점에서 시간이 오래걸린다. 더군다나 여러개의 숫자들에 대해 각각 소수인지 판별하려면 시간이 많이 걸린다. ㅎ ㅎ

def solution(numbers):
    answer = 0
    
    #1. 가능한 숫자 조합을 추출.
    def case(numbers):

        from itertools import permutations

        num_list = list(numbers)
        length = len(num_list)
        basket = set()

        for i in range(1,length+1):
            permute = list(permutations(num_list,i))

            for j in permute:
                n = int(''.join(j))
                if n > 1:
                    basket.add(n)

        return basket

    #2. 소수인지 판별.
    def is_prime_number(num):
        import math

        devide = int(math.sqrt(num))+1

        for i in range(2,devide):
            if num % i == 0:
                return 0
        return 1


		#3. 결과.
    candidate = case(numbers)
    for i in candidate:
        answer += is_prime_number(i)
    return answer

 

728x90
반응형

댓글