TIL 7/11

개발(공부) 자국·2021년 7월 11일
0

학습내용

오늘은 dfs와 bfs를 공부했다. dfs, bfs는 탐색 알고리즘이다. dfs는 깊이 우선 탐색으로 모든 노드의 마지막 리프 노드까지 탐색하고 나와서 옆의 노드로 이동한다. bfs는 너비 우선 탐색으로 같은 레벨에 있는 노드를 우선적으로 탐색한다. dfs와 bfs의 특징을 조금 더 살펴보면 dfs는 리프노드까지 들어가기 때문에 모든 노드를 완전히 탐색한다는 특징이 있다. 그리고 깊게 들어갈때 재귀를 이용한다. 그렇게 재귀를 사용하다보니 스택을 얼마나 사용하게 될지 알기가 어려운 단점도 있다. bfs는 너비를 탐색하기 때문에 완전하게 탐색하기 전에 끝나는 경우가 많다. 단계적인 레벨로 탐색하기 때문에 최단경로를 찾는데 좋다. 그리고 bfs는 옆의 같은 레벨의 노드를 모두 검색하기 때문에 다음에 어디를 탐색하러 가야하는지 알기 위해서 자료구조 queue를 사용하는 것이 특징이다. 재귀보다는 queue를 이용한 반복문으로 탐색한다.

느낀점

알고리즘이 아직 익숙해지지 않는다. 알고리즘은 정말 많이 풀고 경험해봐야 하는 것 같다. 아직도 응용문제를 풀기에는 어렵다. 바로 아이디어를 떠올리지 못한다. 아이디어보다도 탐색을 구현하는 부분이 아직 익숙치 않다. 어떻게 모두 탐색하게 할 수 있는지를 고민하고 있는 것을 보면 아직 제대로 이해하지 못한 부분이 많은 것 같다. 머리속에 있는 방법을 코드로 표현하는 연습을 많이 해야될 것 같다. 다음에 다시 공부할 때는 조금더 이해가 될 수 있었으면 좋겠다.

profile
기록을 중요하게 생각하는 사람입니다. 학습한 내용을 정리한 것이라 잘못된 정보가 있을 수 있습니다. 잘못된 정보는 언제든 말씀해 주시기 바랍니다.

0개의 댓글