rueki

BOJ 2023. 신기한 소수 찾기 (DFS) 본문

python

BOJ 2023. 신기한 소수 찾기 (DFS)

륵기 2022. 10. 6. 17:11
728x90
반응형

https://www.acmicpc.net/problem/2023

 

2023번: 신기한 소수

수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수

www.acmicpc.net

자리 수를 늘려가며 계속해서 소수가 맞는지 확인하는 것이 초점인 문제이다.

첫 자리의 경수 4,6,8,9는 이미 소수가 아니기 때문에 제외하고 2,3,5,7로 시작을 한다.

 

처음 예시

2 - 1 (소수판별) -> 소수가 맞다면 자리수 확장 후 다시 소수 판별... -> N 자리가 될 때까지 (21은 소수가 아니기에 다음은 23을 판별)

231로 확장 되고 231은 소수가 아니기에 다음은 233으로 이런식으로 넘어가게 된다.

 

여기서 재귀의 멈춤 조건은 숫자 확장된 것이 N자리 되는 조건이다. 

N = int(input())

#소수 판별
def isPrime(number):
    for i in range(2, int(number/2) + 1):
        if number % i ==0:
            return False
    return True

def dfs(number):
    if len(str(number)) == N:
        print(number)
    else:
        for i in range(1, 10):
            if i%2 == 0:
                continue
            
            if isPrime(number * 10 + i):
                dfs(number * 10 + i)

dfs(2)
dfs(3)
dfs(5)
dfs(7)
728x90
반응형

'python' 카테고리의 다른 글

BOj 2178. 미로찾기 (BFS)  (0) 2022.10.09
BOJ 11286. 절대값 힙  (0) 2022.10.06
BOJ 2164. 카드2  (0) 2022.10.06
BOJ 17298. 오큰수 (Stack)  (0) 2022.10.05
BOJ 1940. 주몽 (투 포인터)  (1) 2022.10.04
Comments