프론트 개발자를 위한 여정

모든 영역을 안내하는 개발자

Algorithm

[algorithm 공부] DFS/BFS 쉬운 개념 js 구현 방법

ji-frontdev 2025. 1. 6. 19:11
반응형

탐색 알고리즘인 DFS(깊이 우선 탐색)와 BFS(너비 우선 탐색)에 대해 알아보겠습니다.

이 두 알고리즘은 그래프나 트리 구조를 탐색하는 데 매우 유용한 방법입니다.

특히, JavaScript를 기준으로 쉽게 구현하는 방법을 살펴보겠습니다.

1. DFS와 BFS의 개념 이해

DFS는 깊이 우선 탐색으로, 가능한 깊게 노드를 탐색한 후에 더 이상 탐색할 노드가 없으면 이전 노드로 돌아가서 다른 경로를 탐색하는 방식입니다. 반면, BFS는 너비 우선 탐색으로, 시작 노드에서 가까운 노드를 먼저 탐색하고, 그 다음으로 멀리 있는 노드를 탐색하는 방식입니다. 이 두 알고리즘은 각각의 특성에 따라 다양한 상황에서 유용하게 사용됩니다.

이미지 출처

DFS와 BFS의 탐색 경로를 보여주는 다이어그램입니다.

2. DFS와 BFS의 필요성

DFS와 BFS는 다양한 분야에서 활용됩니다. 예를 들어, 웹 크롤러는 BFS를 사용하여 웹 페이지를 탐색하고, 게임에서는 DFS를 사용하여 가능한 경로를 탐색합니다. 이러한 알고리즘을 이해하고 활용하는 것은 프로그래밍에서 매우 중요합니다.

3. JavaScript로 DFS 구현하기

JavaScript로 DFS를 구현하는 방법은 다음과 같습니다. 재귀를 사용하여 깊이 우선 탐색을 수행할 수 있습니다.

javascript function dfs(graph, node, visited = new Set()) ;

bfs(graph, 'A');

이 코드는 시작 노드에서부터 너비 우선으로 탐색을 진행하며, 방문한 노드를 출력합니다.

이미지 출처

DFS와 BFS의 탐색 경로를 비교하는 다이어그램입니다.

5. DFS와 BFS의 차이점

DFS와 BFS의 가장 큰 차이점은 탐색 방식입니다. DFS는 깊이 우선으로 탐색하여 한 경로를 끝까지 탐색한 후 다른 경로로 돌아가고, BFS는 너비 우선으로 탐색하여 가까운 노드부터 차례로 탐색합니다. 이로 인해 DFS는 메모리 사용이 적고, BFS는 최단 경로를 찾는 데 유리합니다.

이미지 출처

DFS와 BFS의 탐색 패턴을 보여주는 다이어그램입니다.

6. 실제 활용 사례

DFS와 BFS는 다양한 분야에서 활용됩니다. 예를 들어, 소셜 네트워크에서 친구 추천 시스템은 BFS를 사용하여 가까운 친구를 찾고, 미로 찾기 문제는 DFS를 사용하여 가능한 경로를 탐색합니다. 이러한 알고리즘을 이해하고 활용하는 것은 프로그래밍에서 매우 중요합니다.

이미지 출처

DFS와 BFS의 탐색 경로를 시각적으로 나타낸 다이어그램입니다.

7. 마무리 및 추가 자료

DFS와 BFS는 그래프 탐색의 기본적인 알고리즘으로, 다양한 상황에서 유용하게 사용됩니다. 이 두 알고리즘을 이해하고 구현하는 것은 프로그래밍의 기초를 다지는 데 큰 도움이 됩니다. 추가적으로, 더 깊이 있는 내용을 원하신다면 아래의 링크를 참고하시기 바랍니다.

이미지 출처

DFS와 BFS의 탐색 경로를 비교하는 다이어그램입니다.

이 포스팅이 DFS와 BFS에 대한 이해를 돕는 데 도움이 되었기를 바랍니다. 😊

 

이런 자료를 참고 했어요.

[1] velog - [Algorithm] DFS와 BFS의 쉬운 개념 + JavaScript 구현 방법 (https://velog.io/@sean2337/Algorithm-DFS%EC%99%80-BFS%EC%9D%98-%EC%89%AC%EC%9A%B4-%EA%B0%9C%EB%85%90-JavaScript-%EA%B5%AC%ED%98%84-%EB%B0%A9%EB%B2%95)

[2] 티스토리 - DFS / BFS - 코딩테스트 with JS - 옷 좋아하는 공대생 - 티스토리 (https://comclothing.tistory.com/98)

[3] F-Lab - DFS와 BFS 알고리즘의 이해와 활용 (https://f-lab.kr/insight/understanding-dfs-and-bfs-20240704)

[4] 티스토리 - [Javascript로 정리하는 이코테] 4. DFS/BFS - 개발자제오 (https://gyyeom.tistory.com/113)

 

태그

#DFS #BFS #JavaScript #알고리즘 #프로그래밍 #탐색알고리즘 #코딩테스트

반응형