Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 2468. 안전영역 본문

acmicpc

[BAEKJOON] 2468. 안전영역

코드와이 2021. 3. 16. 16:30

 

문제링크

www.acmicpc.net/problem/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