[풀이 방법]
- dfs를 활용하여 완전 탐색 진행하였습니다.
- isPrime 함수를 구현하여 소수 판별을 하였습니다.
[풀이 코드]
import math
def isPrime(k):
if k in (2, 3):
return True
if k in (0, 1) or k % 2 == 0:
return False
for i in range(3, int(math.sqrt(k)) + 1, 2):
if k % i == 0:
return False
return True
def dfs(prev, num, numbers, visited):
for i in range(len(numbers)):
if visited[i]:
continue
visited[i] = True
if prev + numbers[i] not in num and isPrime(int(prev + numbers[i])):
num.append(prev + numbers[i])
dfs(prev + numbers[i], num, numbers, visited)
visited[i] = False
def solution(numbers):
numbers = list(numbers)
visited = [False] * len(numbers)
prev = ''
num = []
dfs(prev, num, numbers, visited)
return len(set(list(map(int, num))))
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/python] 연속된 부분 수열의 합 (0) | 2023.05.01 |
---|---|
[프로그래머스/python] n^2 배열 자르기 (0) | 2023.03.28 |
[프로그래머스/python] 피로도 (0) | 2023.03.24 |
[프로그래머스/python] 두 큐 합 같게 만들기 (0) | 2023.03.22 |
[프로그래머스/python] 혼자 놀기의 달인 (0) | 2023.03.17 |