백준 2023 파이썬 DFS 재귀함수
2024. 5. 14. 06:50ㆍ코딩 도구/백준
반응형
백준 2023 - 신기한 소수
문제
https://www.acmicpc.net/problem/2023
2023번: 신기한 소수
수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수
www.acmicpc.net
답안 코드 :
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
N = int(input())
def isPrime(num):
for i in range(2, int(num / 2 + 1)):
if num % 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)
# 일의 자리 소수는 2, 3, 5, 7이므로 4가지 수 에서만 시작
DFS(2)
DFS(3)
DFS(5)
DFS(7)
생각 :
# 문제 분석
# DFS는 재귀함수 형태
# 재귀 함수에 자릿수 개념을 붙여서 구현해보자
# (?) 문제 조건에 맞도록 가지치기도
# 문제 풀이
# 소수란
# 수의 약수가 1과 자기 자신인 수
# 자릿수가 한 개인 소수 : 2 3 5 7
# 4 6 8 9를 제외한 가지치기 방식 적용
# 이어서 자릿수가 두 개인 현재수 * 10 + a를 계산
# 그래서 이게 소수라면 재귀 함수로 자릿수를 하나 늘린다.
# 단 a 가 짝수인 경우는 항상 2를 약수로 가지니까 가지치기로 a가 짝수인 경우 제외
# 이런 방식으로 자릿수를 N까지 확장했을 때 그 값이 소수면 출력해버리자
# 풀이 사진
탐색 알고리즘 정리 블로그
탐색 알고리즘 정리
탐색 탐색은 주어진 데이터에서 자신이 원하는 데이터를 찾아내는 알고리즘을 말한다. 주어진 데이터의 성질(정렬 데이터 또는 비정렬 데이터)에 따라 적절한 탐색 알고리즘을 선택하는 것이
mkisos.tistory.com
반응형
'코딩 도구 > 백준' 카테고리의 다른 글
백준 1260 파이썬 DFS와 BFS를 구현할 수 있는가 (25) | 2024.05.16 |
---|---|
백준 13023 파이썬 DFS의 시간 복잡도 O(V+E) (1) | 2024.05.15 |
백준 11724 파이썬 sys.setrecursionlimit() (1) | 2024.05.13 |
백준 10989 파이썬 기수정렬 계수정렬 (32) | 2024.02.24 |
백준 1517 파이썬 병합정렬 손풀이 플레티넘 (44) | 2024.02.22 |