import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static int n;
static int map[][];
static int dx[]= {0,0,-1,1};
static int dy[]= {-1,1,0,0};
static boolean visit[][];
static int count=0;
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);//
n =sc.nextInt();
map = new int[n][n];
visit = new boolean[n][n];
int result=0;
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
map[i][j]=sc.nextInt();
}
} //문제입력
for(int h=1;h<=100;h++) {
int count=0;
for(int k=0;k<n;k++) { //
for(int l=0;l<n;l++) {
visit[k][l]=false;
}
} // 카운트,visit 초기화
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
if(map[i][j]<=h) {
visit[i][j]=true;
}
if(!visit[i][j]&&map[i][j]>h) {
dfs(i,j,h);
count++;
}
}
}
result=Math.max(result,count);
}
System.out.println(result);
}
static void dfs(int x,int y,int h) {
visit[x][y]=true;
for(int i=0;i<4;i++) {
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=0&&ny>=0&&nx<n&&ny<n) {
if(map[nx][ny]>h&&visit[nx][ny]==false) {
dfs(nx,ny,h);
}
}
}
}
}
예제 넣으면 답맞게나오는데
악 자바
result 1로 시작해봐 - dc App
ㄳ 맞다고 나오는데 이유를 모르겟음 전부다 물에잠겨서 안전지대가 없을수도 있는거아님? 예를들어 전부 높이가 1이라면 다 물에잠겨서 안전지대는 0인데 result는 1을찍잔슴
비가 0.5만 올 수도 있잖아 - dc App
ㅇㅎ