Baekjoon/C++

[백준 1012번] 유기농 배추

Yo-mi 2023. 7. 25. 21:53
#include <iostream>

using namespace std;

void find(int a, int b, int arr[52][52]) {
	try {
		if (arr[a + 1][b] == 100) {
			arr[a + 1][b]++;
			find(a + 1, b, arr);
		}
		if (arr[a - 1][b] == 100) {
			arr[a - 1][b]++;
			find(a - 1, b, arr);
		}
		if (arr[a][b + 1] == 100) {
			arr[a][b + 1]++;
			find(a, b + 1, arr);
		}

		if (arr[a][b - 1] == 100) {
			arr[a][b - 1]++;
			find(a, b - 1, arr);
		}
	} 
	catch (exception) {

	}
}
int main() {
	int num, m, n, k, x, y, count;
	
	cin >> num;

	for (int i = 0; i < num; i++) {
		count = 0;
		cin >> m >> n >> k;
		// reset ground
		int ground[52][52] = {0,};

		for (int j = 0; j < k; j++) {
			cin >> x >> y;
			ground[y][x] = 100;
		}
		// find
		for (int a = 0; a < n; a++) {
			for (int b = 0; b < m; b++) {
				if (ground[a][b] == 100) {
					ground[a][b]++;
					count++;
					find(a, b, ground);
				}
			}
		}
		cout << count << '\n';

	}
	return 0;
}

 

재귀함수를 쓰는 것이 포인트인 것 같다.

 

 

 

문제: https://www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net