숫자 0~9로 이루어진 길이 1~7 자리의 문자열이 주어질 때, 해당 숫자들의 조합으로 만들 수 있는 소수의 개수를 반환하는 함수 작성
from itertools import permutations
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def solution(numbers):
answer = 0
combs = [list(i) for j in range(1, len(numbers)+1) for i in permutations(numbers, j)]
sets = set()
for items in combs:
sets.add(int(''.join(items)))
for item in sets:
if is_prime(item):
answer += 1
return answer
is_prime()
(참고자료)permutations
모듈을 활용하여 1~문자열길이 만큼의 순열 조합을 생성하여 combs
변수에 배열 형태로 저장set
타입 변수sets
를 생성한 뒤, combs
안에 있는 문자열들을 결합하여 정수형으로 변환한 값을 sets
에 추가sets
내부의 각 정수개체에 접근하며 소수 판별 후, 소수일 경우 answer
값을 1씩 추가하여 반환