728x90
반응형
https://www.acmicpc.net/problem/2023
2023번: 신기한 소수
수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수
www.acmicpc.net
문제 풀이
- 두자리 이상일때(n≥2) 맨 앞자리는 소수만 가능(2,3,5,7) 나머지 자리는 홀수만 가능(1,3,5,7,9)
- 그래서 앞자리 만드는 것 부터 시작.(2, 3, 5, 7)
- 그 다음 수를 이어 붙일 때 소수인지 확인하고 소수이면 이어붙이고 아니면 다른 수 찾기
- n자리 수가 되었을 때 출력
- 전형적인 DFS로 풀 수 있다.
CODE
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
def is_prime(num):
if num%2 ==0:
return False
for i in range(3,int(num/2)+1,2):
if num%i ==0:
return False
return True
def DFS(num):
if len(str(num)) == n:
print(num)
return
else:
for i in range(1,10,2):
if is_prime(num*10+i):
DFS(num*10+i)
if __name__=='__main__':
n = int(input())
DFS(2)
DFS(3)
DFS(5)
DFS(7)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1715 카드 정렬하기 (0) | 2023.02.23 |
---|---|
[python] 백준 2343 기타 레슨 (0) | 2023.02.23 |
[python] 백준 10989 수 정렬하기 3 (0) | 2023.02.22 |
[python] 백준 11003 최솟값 찾기 (0) | 2023.02.19 |
[python] 백준 12891 DNA 비밀번호 (0) | 2023.02.19 |
댓글