![[BOJ 1012] 유기농 배추 (C++)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtNbze%2FbtrjkZoPI5U%2FNOhGHnqKOmcZdkKbTOZZnk%2Fimg.png)

Problem
https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
Comment
유기농 배추가 잘 담길 수 있도록 cin으로 좌표값을 받아서 cabbage 배열에 1로 저장해줍니다. 잘 저장된 cabbage 배열을 반복문으로 쭉 돌립니다. 0이 나오면 유기농 배추가 없는 것이니 그냥 넘어가고 1이 나오면 BFS를 해줍니다(사실 여기서 BFS를 하든 DFS를 하든 상관없습니다. 근데 전 BFS로 구현했습니다.)
BFS 함수로 넘어가서, 1이 나온 그 자리를 기준으로 상하좌우를 살펴봐야 합니다. 방향 표시를 용이하게 해주는 dx와 dy 배열을 이용해서 찾아줍니다. (이 때, 유기농 배추를 담고 있는 농장을 벗어나지 않게 조심해야 합니다.) 만약 유기농 배추를 찾게 된다면 두 가지 작업을 해주어야 합니다.
1. 원래 유기농 배추가 있던 자리를 0으로 만들어줍니다. 왜냐하면, main 함수에서 유기농 배추 농장 안에 있는 모든 인덱스 값을 돌고 있기 때문에 중복으로 카운트 될 수 있기 때문입니다.
2. 상하좌우 해서 찾아낸 유기농 배추를 큐에 추가합니다.
그렇게 찾으면 서로 연결되어 있는 유기농 배추들을 알 수 있고, 배추흰지렁의의 최소 마리 수를 알 수 있습니다.
Code

Result

Remark
배열을 다룰 때 가로와 세로 작성법에 혼동이 가지 않도록 주의해야 합니다.
'CSE > 알고리즘 (algorithm)' 카테고리의 다른 글
[BOJ 1008] A / B (C++) (0) | 2021.11.04 |
---|---|
[BOJ 10869] 사칙연산 (C++) (0) | 2021.11.03 |
[BOJ 10998] A × B (C++) (0) | 2021.11.03 |
[BOJ 1001] A - B (C++) (0) | 2021.11.03 |
[BOJ 1000] A + B (C++) (0) | 2021.11.03 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!