아이디어:
numbers 배열에서 만들 수 있는 모든 정수를 구한 후 소수인지 판별(dfs) -> 소수라면 temp에 저장
import math
temp = []
def solution(numbers):
iniarr = list(map(int, numbers))
for i in range(1, len(iniarr)+1):
dfs(i, iniarr)
print(temp)
answer = len(temp)
return answer
def dfs(m, numbers, arr =[], visited = []):
if len(arr) == m :
num = 0
for j in range(0, m):
num += 10 ** (m-j-1) * arr[j]
if num not in temp and isPrime(num)==True:
temp.append(num)
return
else:
for i in range(0,len(numbers)):
if i not in visited:
visited.append(i)
arr.append(numbers[i])
dfs(m, numbers, arr)
arr.pop()
visited.pop()
def isPrime(num):
if num <= 1:
return False
if num == 2:
return True
for i in range(2, int(math.sqrt(num))+1):
if (num % i) == 0:
return False
return True
728x90
'코테 > 프로그래머스' 카테고리의 다른 글
프로그래머스 피로도 (0) | 2022.12.26 |
---|---|
프로그래머스 피로도 (0) | 2022.12.26 |
프로그래머스 카펫(python) (0) | 2022.12.23 |
프로그래머스 모의고사 (0) | 2022.12.23 |
프로그래머스 최소 직사각형 (0) | 2022.12.23 |