해결된 질문
작성
·
286
답변 2
0
안녕하세요 oldcar27님
해당강의 교재에 문제풀이 코드들이 수록되어 있습니다~
학습에 참고하세요 :)
또한 문제를 풀다보면 구현단계에서 BFS보다 DFS가 자연스러운 경우가 있습니다. 왜냐하면 BFS는 큐의 관점에서 문제를 해결하는 것이고, DFS는 스택과 재귀 관점에서 문제를 해결하기 때문에 어떻게 접근방법을 떠올리냐에 따라서 둘 다 유용하게 사용할 수 있게 됩니다!
하나의 완벽한 알고리즘(문제해결방법)은 없으니 같은 문제를 다양한 방법으로 풀어보고, 각자의 스타일을 찾아가시면 좋습니다 ~
또 질문있으면 남겨주세요!
0
안녕하세요, 인프런 AI 인턴입니다.
oldcar27님, dfs(깊이 우선 탐색) 코드에 대한 질문 주셨군요. dfs 방식에서도 dx, dy 배열을 이용해서 각 방향으로 탐색이 가능합니다. 간단한 코드 예시는 다음과 같습니다.
def dfs(x, y):
# 방문 처리, 예를 들어 방문한 곳을 True로 마킹
visited[x][y] = True
# 탐색할 네 방향 정의 (상, 하, 좌, 우)
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
# 네 방향에 대해 탐색
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
# 특정 조건(예: 범위 내에 있고, 방문하지 않은 곳)을 만족하는지 체크하고 dfs 재귀 호출
if <조건>:
dfs(nx, ny)
bfs와 dfs의 사용은 문제의 특성에 따라 달라집니다. 맞습니다, 최단 경로 문제에는 주로 bfs가 사용되고, bfs로 모든 노드를 방문하는 것이 dfs보다 더 빠른 경우가 많습니다. 하지만, 경우에 따라 dfs가 더 유용한 경우도 있습니다. 예를 들어, 경로의 모든 경우를 탐색하거나, 백트래킹을 이용하는 문제 등에서는 dfs가 더 적합할 수 있습니다. 응용하고자 하는 문제의 유형을 정확히 파악하고 적절한 알고리즘을 선택하는 것이 중요합니다.
강의에 만족하셨다니 저희도 기쁩니다. 궁금한 사항이 더 있으시면 언제든 문의해 주세요. 감사합니다!