알고리즘
프로그래머스 소수찾기 [파이썬]
Brad Daeho Lee
2021. 6. 19. 11:23
문제
문제풀이
from itertools import permutations
import math
def prime_number(n):
num = math.sqrt(n)
if n < 2:
return False
for k in range(2, int(num)+1):
if n % k == 0:
return False
return True
def solution(numbers):
answer = []
#permutation 혹은 combination을 사용해서 숫자의 조합을 구할 수 있다.
#permutation의 두번째 인자에는 조합되는 숫자의 개수를 정한다.
for i in range(1 ,len(numbers)+1):
#map을 사용해서 tuple의 string을 합친다음 list로 만들었다.
lst = list(map(''.join, permutations(list(numbers), i)))
#list안에 공통되는 str을 set으로 단일화 시킨다음 다시 list로 만들었다.
for j in list(set(lst)):
#True값을 반환하면 j를 answer list에 포함시킨다.
if prime_number(int(j)):
answer.append(int(j))
#또 set을 쓰는 이유는 맨 앞자리가 0인 str은 int로 바꿨을 때 0이 사라진다.
#그래서 공통되는 숫자가 생길 수 있다.
return len(set(answer))