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;
}
재귀함수를 쓰는 것이 포인트인 것 같다.