#include<bits/stdc++.h>
using namespace std;
int dy[4] = { -1,0,1,0 };
int dx[4] = { 0,1,0,-1 };
int a[101][101];
int visited[101][101];
int n, d, cnt, ret = 1;
void dfs(int y, int x, int d) {
visited[y][x] = 1;
for (int i = 0; i < 4; i++) {
int ny = y + dy[i];
int nx = x + dx[i];
if (ny < 0 || nx < 0 || ny >= n || nx >= n) continue;
if (!visited[ny][nx] && a[ny][nx] > d) dfs(ny, nx, d);
}
return;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
for (int d = 1; d < 101; d++) {
fill(&visited[0][0], &visited[0][0] + 101 * 101, 0);
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] > d && !visited[i][j]) {// 조건만족 , 방문x
dfs(i, j, d);
cnt++;
}
}
}
ret = max(cnt, ret);
}
cout << ret << '\n';
return 0;
}
문제 ) 첫째 줄에는 어떤 지역을 나타내는 2차원 배열의 행과 열의 개수를 나타내는 수 N이 입력된다. N은 2 이상 100 이하의 정수이다. 둘째 줄부터 N개의 각 줄에는 2차원 배열의 첫 번째 행부터 N번째 행까지 순서대로 한 행씩 높이 정보가 입력된다. 각 줄에는 각 행의 첫 번째 열부터 N번째 열까지 N개의 높이 정보를 나타내는 자연수가 빈 칸을 사이에 두고 입력된다. 높이는 1이상 100 이하의 정수이다.
예외) 아무 지역도 물에 잠기지 않을 수도 있다.
==> ret은 최소 1이다.
for문에서 d를 1부터 설정하려면 ret = 1
for문에서 d를 0부터 설정하려면 ret = 0