찬우의 이것저것 Chanwoo's blog

[프로그래머스 python]완전탐색 소수찾기

https://programmers.co.kr/learn/courses/30/lessons/42839

numbers return
17 3
011 2

numbers로 만들수있는 모든 순열(permutations)을 만들어서 isPrime()이 True인 경우 primes에 추가

return len(primes) 하면 답이 나오게된다.

import itertools

def is_prime(n: int) -> bool:
    if n < 2:
        return False
    if n is 2:
        return True
    if n % 2 is 0:
        return False
    l = round(n ** 0.5) + 1
    for i in range(3, l, 2):
        if n % i is 0:
            return False
    return True

def solution(numbers):
    numbers = list(numbers)
    perms = []
    for n in range(1,len(numbers)+1):
        perms += set(map(''.join, itertools.permutations(numbers, n)))
    perms = set(map(int,perms))

    primes = []
    for i in perms:
        if is_prime(i):
            primes.append(i)

    return len(primes)