[프로그래머스_42839] 소수 찾기 Python 풀이

출처: 프로그래머스

문제

image

풀이

완전탐색으로 permutation을 이용해 모든 가능한 수를 찾아주었습니다.

소수를 판별하는 함수를 따로 만들어주었고, 함수 내에서 제곱근만큼만 돌려주어 효율을 높였습니다.

소수라면 num_set에 넣어주고 마지막에는 중복제거를 위해 set으로 바꿔준 뒤 길이를 return 해주었습니다.

코드

from itertools import permutations
# 소수 판별 함수
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**(0.5))+1):
        if n % i == 0:
            return False
    return True
def solution(numbers):
    num_set = []
    for i in range(1, len(numbers)+1):
        # 가능한 조합 모두 찾아주기
        for p in permutations(numbers, i):
            num = int("".join(p))
            # 소수라면 num_set에 넣어주기
            num_set += [ num ] if is_prime(num) else []
    # set으로 중복 제거하기
    num_set = set(num_set)
    return len(num_set)

Leave a comment