출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

흔한 소수 문제였다

from itertools import permutations

def is_prime(n):
    if n == 1 or n == 0:
        return False
    else:
        for i in range(2, int(n**0.5)+1):
            if n%i == 0:
                return False
        else:
            return True

def solution(numbers):
    count = 0
    possible_num = []
    for i in range(0, len(numbers)+1):
        for j in permutations(list(numbers), i):
            if ''.join(j) == '':
                continue
            else:
                possible_num.append(int(''.join(j)))
    possible_num = set(possible_num)
    for k in possible_num:
        if is_prime(k):
            count += 1
    return count

하지만 흔하다고 쉬운 것은 아니다. 소수 문제는 항상 까먹는다;; 그래서 다시 고민하고 예전의 기억들을 끄집어내야 했다. 또한, 여기서는 주어진 숫자 문자열에서 가능한 모든 조합을 찾아내야 했는데, 이를 위해서는 itertools.permutations를 불러와서 외부 함수를 사용했어야 했다. permutations(list(numbers), i)를 통해 가능한 모든 숫자들의 조합을 찾을 수 있었다.