🧐한줄 개념: DFS & BFS를 이용한 탐색
<문제>
https://www.acmicpc.net/problem/2667
<문제 분석>
1. 정점은 집이다. 상하좌우로 탐색해서 1이면 다시 탐색을 계속한다.
2. 총 단지 수와 각 단지마다 집의 개수를 출력한다.
<문제 풀이>
1. 메인함수에서 for문으로 dfs 함수를 호출한다.
2. 방문처리 된 곳이면 스킵하다가 새로운 1을 만나면 새로운 단지의 시작이다.
3. 방문배열을 방문처리할 때 count++를 하다가 새로운 단지를 만나면 초기화하자.
4. 단지 내 집의 수를 오름차순으로 정렬해서 출력해야 한다.
좌표 [0, 0] 부터 상, 하, 좌, 우 순서로 탐색을 시작한다.
좌표 [0, 0]은 0이므로 건너뛰고, 1인 [0, 1]에서 시작한다. (방문했으므로visit 배열에 true 표시)
배열의 범위를 벗어나면 안되므로 배열이 0보다 크고, N보다 작을 경우 그리고 아직 방문하지 않았을 경우에만 DFS를 돌린다.
[0, 1] -> [1, 1] -> [2, 1] -> [2, 0] -> [2, 2] -> [1, 2] -> [0, 2] 순서로 재귀적으로 호출하며 깊게 타고 들어가면서 탐색을 진행한다.
count = 1이 끝났으면 count를 1 증가시켜서 [0, 4]부터 반복적으로 DFS를 다시 진행한다. 탐색이 끝나고 난 뒤에는 아래와 같이 단지수가 기록된다.
*cnt 초기화를 하지 않아서 오류