[C++]BOJ 2667 - 단지번호붙이기

[C++]BOJ 2667 - 단지번호붙이기

지도를 배열에 저장하고 칸별로 분기를 돌며 집이 있는 칸을 만나면 인접한 집들을 탐색한다.
위 과정을 반복해 단지를 나누고 집의 수를 벡터에 저장한 후 정렬해 출력한다.
bfs dfs 두 방법 모두 다뤄보겠다.

Read More
[C++]BOJ 2178 - 미로 탐색

[C++]BOJ 2178 - 미로 탐색

각 칸에서 이동할 수 있는 칸으로 탐색해나가 도착점에 도달하면 그 이동 거리가 최소 거리가 되므로 bfs를 사용하면 빠르게 해결할 수 있다.
dfs로도 해결할 수 있지만 한번 방문한 칸은 다신 방문하지 않는 bfs와는 다르게 모든 경로를 탐색하므로 작동시간이 다소 오래걸린다.

두 방법 모두 다뤄보겠다.

Read More
DFS(Depth First Search)와 BFS(Breath First Search)

DFS(Depth First Search)와 BFS(Breath First Search)

  • 깊이 우선 탐색(Depth First Search)
    • 루트 노드에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법
    • 재귀함수를 기반으로 순환 알고리즘의 형태를 지님.
  • 너비 우선 탐색(Breath First Search)
    • 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법
    • 재귀함수로 동작하지 않는다.
    • 큐를 사용하여 효율적으로 구현 가능하다.

hackerearth

Read More