1. 문제

https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
1로 구성된 영역이 총 몇개가 있는지 찾는 문제이다.
상, 하, 좌, 우 중 하나가 연결되어 있다면 인접한 것이고 같은 영역으로 카운트 된다.
하지만 4방향 중 어느 하나에도 연결되어 있지 않다면 인접하지 않은 것이고 다른 영역으로 카운트 해줘야 한다.
2. 풀이
BFS를 이용하여 풀이할 것이므로 deque를 활용할 것이다.
그래프를 탐색하기 위해 x, y좌표를 변화시킬 때 사용할 리스트가 필요하다.
(-1, 0), (1, 0), (0, -1), (0, 1) 방향으로 탐색하기 위해 dx, dy를 적절하게 세팅한다.
BFS를 수행할 함수를 작성하는데, 이 함수에서는 방문한 좌표를 0으로 바꾸고(방문처리)
상, 하, 좌, 우로 이동하며 만약 방문하지 않은 1이 있다면 큐에 해당 좌표를 추가하고 방문처리를 한다.
BFS 함수가 종료되었다는 것은 인접한 배추를 모두 방문했다는 뜻이고,
BFS가 다시 실행된다면 인접하지 않은 배추를 만났다는 뜻이므로 cnt + 1을 해준다.
3. 코드
4. 느낀점
본격적인 그래프 탐색 문제였다.
처음에는 이해가 잘 되지 않았지만, 구글링을 통해 조금씩 코드를 이해할 수 있었다.
여러 문제를 풀어보면서 그래프 탐색 형태에 좀 더 익숙해 져야 할 것 같다.
오늘 하루도 쌓였다.
'코딩 테스트 연습 > 백준' 카테고리의 다른 글
[Python]Baekjoon 17478번: 재귀함수가 뭔가요? (0) | 2024.03.04 |
---|---|
[Python]Baekjoon 2178번: 미로 탐색(BFS) (0) | 2024.03.03 |
[Python]Baekjoon 2606번: 바이러스(DFS) (0) | 2024.03.01 |
[Python]Baekjoon 2606번: 바이러스(BFS) (0) | 2024.02.29 |
[Python]Baekjoon 7568번: 덩치 (0) | 2024.02.27 |