코드와이
[BAEKJOON] 2468. 안전영역 본문
문제링크
2468번: 안전 영역
재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는
www.acmicpc.net
package acmicpc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class 안전영역 {
static int[][] map;
static int n;
static boolean[][] visit;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
n = Integer.parseInt(br.readLine());
int max = -1;
map = new int[n][n];
for(int i = 0 ; i < n ; i++) {
st = new StringTokenizer(br.readLine());
for(int j = 0 ; j < n ; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
max = Math.max(max, map[i][j]);
}
}
int ans = 0;
for(int m = 0 ; m <= max ; m++) {
visit = new boolean[n][n];
int cnt = 0;
for(int i = 0 ; i < n ; i++) {
for(int j = 0 ; j < n ; j++) {
if(map[i][j] > m && !visit[i][j]) {
cnt += 1;
func(i, j, m);
}
}
}
ans = Math.max(cnt, ans);
}
System.out.println(ans);
}
static int[] dr = {-1, 1, 0, 0};
static int[] dc = {0, 0, 1, -1};
public static void func(int r, int c, int m) {
visit[r][c] = true;
int nr, nc, i;
for(i = 0 ; i < 4 ; i++) {
nr = r + dr[i];
nc = c + dc[i];
if(0 <= nr && nr < n && 0 <= nc && nc < n) {
if(map[nr][nc] > m && !visit[nr][nc]) {
func(nr, nc, m);
}
}
}
return;
}
}
'acmicpc' 카테고리의 다른 글
[BAEKJOON] 2178. 미로 탐색 (0) | 2021.03.21 |
---|---|
[BAEKJOON] 17135. 캐슬 디펜스 (0) | 2021.03.17 |
[BAEKJOON] 7562. 나이트의 이동 (0) | 2021.03.12 |
[BAEKJOON] 1541. 잃어버린 괄호 (0) | 2021.03.07 |
[BAEKJOON] 6603. 로또 (0) | 2021.03.06 |