인프런 커뮤니티 질문&답변
문제 풀이 방식 관련 질문입니다!
작성
·
15
0
1. 현재 학습 진도
몇 챕터/몇 강을 수강 중이신가요? 5-2. LINE 인턴 채용 코딩테스트
어떤 알고리즘을 학습하고 계신가요? DFS, BFS
여기까지 이해하신 내용은 무엇인가요? DFS, BFS의 기본 개념
2. 어려움을 겪는 부분
어떤 개념이 헷갈리시나요?
여기서 문제를 푸실 때 완전탐색을 해야한다. 그래서 BFS를 사용하고자 큐를 사용하신 것까지 이해 했습니다! 근데 완전탐색의 경우 DFS를 사용해야하는게 아닌가..?라는 의문 때문에 질문을 하게되었습니다. 이 문제에서는 DFS나 BFS 둘 중 아무거나 써도 되는 것인가요?
또한 어떤 경우에 DFS를 써야하고 BFS를 써야하는지 잘 모르겠습니다...
이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
zzzb1님, DFS(깊이 우선 탐색)와 BFS(너비 우선 탐색)를 언제 어떻게 사용해야 할지에 대한 혼란이 있으신 것 같습니다. 두 개념은 탐색 알고리즘으로, 탐색 목적과 조건에 따라 적합한 방법이 달라질 수 있습니다.
DFS vs BFS 차이점
DFS(Depth-First Search): 깊이 우선 탐색은 가능한 깊이까지 탐색 후, 다시 돌아오면서 탐색하는 방식입니다. 스택을 사용하거나 재귀를 통해 구현할 수 있으며, 경로의 끝까지 빠르게 닿아야 하는 경우나 백트래킹이 필요한 경우 적합합니다.
BFS(Breadth-First Search): 너비 우선 탐색은 현재 노드의 인접 노드들을 먼저 모두 탐색하고 나서, 그 다음 레벨로 넘어가며 탐색하는 방식입니다. 큐를 사용하며, 최단 경로가 필요할 때나, 모든 경로를 동일한 깊이에서 확인해야 할 때 유리합니다.
언제 사용해야 할까요?
DFS를 사용해야 하는 경우:
- 백트래킹이 필요한 문제: 예를 들어, 모든 경로를 탐색하여 특정 조건을 만족하는 경로가 있는지 확인하는 경우.
- 트리 구조의 경우: 많이 사용됩니다. 예를 들어, n-queen 문제처럼 가능한 모든 배치를 시도해야 할 때 유용합니다.
- 백트래킹이 필요한 문제: 예를 들어, 모든 경로를 탐색하여 특정 조건을 만족하는 경로가 있는지 확인하는 경우.
BFS를 사용해야 하는 경우:
- 최단 경로를 구해야 하는 문제: BFS는 모든 경로를 동일한 깊이에서 보기 때문에 최단 경로를 찾는 데 유리합니다.
- 모든 인접 노드를 먼저 확인해야 하는 경우: 특정 상태에 도달하기 위해 모든 가능성을 하나씩 확인해야 할 때.
- 최단 경로를 구해야 하는 문제: BFS는 모든 경로를 동일한 깊이에서 보기 때문에 최단 경로를 찾는 데 유리합니다.
선택 시 고려할 점
- 문제의 성격: 최단 경로가 중요한지, 모든 경로 탐색이 중요한지에 따라 다릅니다.
- 공간 및 시간 복잡도: DFS는 스택 메모리가 필요하고, BFS는 큐 메모리가 필요하므로, 노드의 수와 메모리 사용량을 고려해야 합니다.
유사한 주제에 관해서는 다음 링크들을 참고해 보세요:
- [질문 제목: 3주차 병합정렬 해결방법]
위 링크에서는 다양한 알고리즘에 대해 설명하고 있어, DFS와 BFS의 활용 이해를 돕는 데 유용할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




