첫번째 코드
사실 DFS...아직 어렵다... 책은 정말 똑똑한 친구구나...
023번 문제는 그래도 해당하는 곳에 가서 F를 T로 바꾸고 모두 T가 되면 그만 하는 그런 시스템이라면
024번 문제는 앞의 개념으로 이해하면 소수인 경우에 진행하고 아니면 버리는 식의 재귀 시스템을 돌아가는 코드이다.
DFS는 한번 방문하면 다시 방문하지 않는 시스템인데...그러면 여기서는....
한 자리 수 일때 소수이면 자리수를 추가해서 소수이면 자리수를 추가하고...이런 식으로 다시 한자리 수 일때로 돌아가지 않아서 DFS의 "한번 방문하면 다시 방문하지 않는 시스템"에 포함되는 것인가?
import sys
input = sys.stdin.readline
n = int(input())
def prime(x):
for i in range(2, int((x/2)+1)):
if x % i == 0:
return False
return True
def DFS(num):
if len(str(num)) == n:
print(num)
else:
for i in range(1, 10):
if i % 2 == 0:
continue
if prime(num * 10 + i):
DFS(num * 10 + i)
DFS(2)
DFS(3)
DFS(5)
DFS(7)
마음이 매우 굉장히 찝찝한 어려운 통과!
DFS 관련된 문제가 모여있는 곳이 있다면 풀어봐야 할 듯 하다!
그래도 이런 식의 방법도 있다는 것 확인!!!
링크
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
025 ABCDE (0) | 2024.05.14 |
---|---|
026 DFS와 BFS (0) | 2024.05.14 |
023 연결 요소의 개수 (0) | 2024.05.09 |
022 수 정렬하기 3 (0) | 2024.05.07 |
021 버블 소트 (0) | 2024.05.07 |