알고리즘 공부/백준 문제풀이

[python 백준] 1012번 유기농 배추

이현찬 2022. 9. 24. 14:34
728x90

문제 설명

  • 배추가 심어진 위치는 1, 심어지지 않은 위치는 0으로 표시되어 주어진 map에서 서로 인접한 배추들의 집합이 몇 개 있는지 확인하는 flood fill 문제

고민한 부분

  • flood fill 문제는 어떤 칸에 연결된 영역을 탐색하는 알고리즘이다. 구현은 BFS나 DFS 등 그래프 탐색 알고리즘을 반복 사용해 풀이하는 것이 많은 것 같다.
  • 이 문제에서는 배열에서 연결된 배추들의 영역의 수를 세야 한다. 이를 위해 배열을 차례로 탐색하며 배추가 심어진 위치에 도달했을 때 BFS 알고리즘으로 인접한 영역을 탐색하고 BFS 실행 횟수를 반환하도록 구현했다.
  • 이미 탐색한 영역을 중복 count하는 것을 방지하기 위해 어떤 표시를 해야했다. 배추 밭과 같은 크기의 배열을 만들어 표시를 할 수도 있지만 배추 밭 배열을 다시 사용할 필요가 없기 때문에 그 배열에 직접 조작하는 방식으로 구현했다.