from itertools import permutations
import math
# 소수 검증
def isPrime(num_int):
if num_int < 2:
return False
if num_int == 2:
return True
for i in range(2, math.ceil(math.sqrt(num_int))+1):
if num_int % i == 0:
return False
return True
def solution(numbers):
answer = set()
nums = list(numbers)
# 완전탐색 가능 (7!)
for size in range(1, len(nums)+1):
perm = permutations(nums, size)
for items in perm:
num_str = ''.join(x for x in items)
num_int = int(num_str)
if isPrime(num_int):
answer.add(num_int)
return len(answer)
완전탐색
이 가능한 상황임을 인지하는게 포인트인 문제였다.
경우의 수는 기껏해야 7! + 6! + ... + 1! 정도가 나오니 완전탐색을 하기에 문제 없었다.
완전탐색으로 가능하다는 사실을 알게되면 그 다음은 순열, 소수 검증 함수를 만들어 구현을 꼼꼼히 하는게 다였던 문제였다.
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/42839