깊이 우선 탐색을 이용한 문제
# 신기한 소수
# 왼쪽부터 1자리, 2자리, ..., N자리 수 모두 소수인 수를 찾아라.
# 첫째 줄에 N이 주어진다. N자리 수 중에서 해당하는 소수를 찾아 오름차순으로 정렬해서 한 줄에 하나씩 출력한다.
# 소수 판단 함수
def isPrime(num):
for i in range(2, int(num / 2 + 1)):
if num % i == 0:
return False
return True
# 깊이 우선 탐색 함수
def DFS(num):
if len(str(num)) == N:
print(num)
else:
for i in range(1, 10):
# 현재 수에 i를 붙였을 때 홀수 && 소수인 경우만 출력
if (num*10 + i) % 2 == 1 and isPrime(num*10 + i):
DFS(num*10 + i)
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
N = int(input())
# 1의 자리 소수는 2 3 5 7만 존재하므로 이에 대해서만 실행
# DFS 함수를 실행하면, 해당 수에서 시작해서 뒷 자리에 숫자를 붙이며 탐색하므로 4가지 경우만 탐색하면 됨
DFS(2)
DFS(3)
DFS(5)
DFS(7)
수빈이 악취미 가지고있네 ..
'Code > Python' 카테고리의 다른 글
[Python] 백준 1260번 DFS와 BFS (0) | 2023.10.04 |
---|---|
[Python] 백준 13203번 ABCDE (1) | 2023.10.03 |
[Python] 백준 11724번 연결 요소의 개수 (0) | 2023.10.02 |
[Python] 백준 10989번 수 정렬하기 3 (0) | 2023.10.01 |
[Python] 백준 1517번 버블소트 (0) | 2023.09.30 |