안녕하세요 :)
제한사항 n이 크지 않아서 그냥 문제 고대로 풀었습니다..
https://programmers.co.kr/learn/courses/30/lessons/42839
import itertools, math
def solution(numbers):
numbers = list(numbers)
make_numbers = set()
for length in range(1, len(numbers) + 1):
permutation_list = set(list(itertools.permutations(numbers, length)))
for item in permutation_list:
item = list(map(''.join, item))
item = int(''.join(item))
make_numbers.add(item)
answer = 0
for number in make_numbers:
if is_prime_number(number):
answer += 1
return answer
def is_prime_number(n):
if n >= 2:
for i in range(2, int(math.sqrt(n)) + 1): #2부터 n의 제곱근까지의 모든 수를 확인하며
if n % i == 0:
return False
else:
return False
return True
파이썬 itertools 이용해서 permutation으로 순열 구했구요.
파이썬에서 itertools 없이 permutation 구현을 하고싶다면 아래 url 참고해도 좋을 것 같습니다.
https://shoark7.github.io/programming/algorithm/Permutations-and-Combinations