2 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S1_2468] ์•ˆ์ „ ์˜์—ญ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main{
	static StringTokenizer st;
	static int N, res;
	static int[][] arr;
	static int[] dx = { 1, -1, 0, 0 };
	static int[] dy = { 0, 0, 1, -1 };

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// ํ–‰์—ด์˜ ๊ฐœ์ˆ˜
		N = Integer.parseInt(br.readLine());

		arr = new int[N][N];

		// ๊ฐ€์žฅ ๋†’์€ ๋†’์ด
		int max = 0;
		
		// ์•ˆ์ „ํ•œ ์˜์—ญ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜
		int res_max = 0;

		// ๋†’์ด ์ž…๋ ฅ
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine(), " ");
			for (int j = 0; j < N; j++) {
				arr[i][j] = Integer.parseInt(st.nextToken());
				max = Math.max(arr[i][j], max);
			}
		}
		for (int i = 0; i < max; i++) {
			res = 0;

			// ๊นŠ์ด๊ฐ€ ๋‚ฎ์€ ๊ฒƒ์€ true ์ฒ˜๋ฆฌ
			boolean[][] v = new boolean[N][N];
			for (int j = 0; j < N; j++) {
				for (int z = 0; z < N; z++) {
					if (arr[j][z] <= i) {
						v[j][z] = true;
					}
				}
			}

			for (int j = 0; j < N; j++) {
				for (int z = 0; z < N; z++) {
					// ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ž ๊ธฐ์ง€ ์•Š์•˜์œผ๋ฉด dfs ์‹คํ–‰
					if (!v[j][z]) {
						dfs(j, z, v);
						res++;
					}
					else {
						continue;
					}
				}
			}
			res_max = Math.max(res, res_max);
		}
		System.out.println(res_max);
	}
	
	// boolean ๋ฐฐ์—ด์— true ์ž…๋ ฅํ•ด์ฃผ๋Š” ์—ญํ•  
	static void dfs(int y, int x, boolean[][] v) {
		
		// ๊ธฐ์ €์กฐ๊ฑด : ์ž ๊ธฐ์ง€ ์•Š์€ ์ง€์—ญ ๋‹ค 
		if (v[y][x]) {
			return;
		}
		
		// ์ž ๊ธฐ์ง€๋„ ์•Š๊ณ  ๋ฐฉ๋ฌธํ•˜์ง€๋„ ์•Š์•˜์œผ๋ฉด
		if(!v[y][x]) {
			v[y][x] = true;
		
		int nx, ny;
		for (int i = 0; i < 4; i++) {
			nx = x + dx[i];
			ny = y + dy[i];

			// ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด
			if (nx < 0 || ny < 0 || nx >= N || ny >= N) {
				continue;
			}
			
			dfs(ny, nx, v);
			}
		}
	}
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๋จผ์ € ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•ด๋ณด์ž๋ฉด ๋†’์ด๊ฐ€ ๋‹ค์–‘ํ•œ ์ง€์—ญ๋“ค์ด ์žˆ๋‹ค. ๋น„๊ฐ€ ์˜ค๋Š” ์–‘์— ๋”ฐ๋ผ ์ง€์—ญ์ด ์ž ๊ธฐ๋ƒ ๋งˆ๋ƒ๊ฐ€ ๊ฒฐ์ • ๋œ๋‹ค.
๋น„๊ฐ€ ๋งŽ์ด ์™€์„œ ๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š์€ ์ง€์—ญ๋“ค์€ ์ƒํ•˜์ขŒ์šฐ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ํ•œ ๊ณต๊ฐ„์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค. ๋Œ€๊ฐ์„ ์€ ์—ฐ๊ฒฐ์ด๋ผ๊ณ  ์น˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ ๊ณต๊ฐ„๋“ค์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ์ด ๊ฐœ์ˆ˜๋“ค ์ค‘ ์•ˆ์ „ํ•œ ์˜์—ญ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ด๋‹ค.
ํ•œ ๋งˆ๋””๋กœ ๋น„๊ฐ€ ๋‚ด๋ ค์„œ ์–‘์ด 1, 2, 3, 4 .. ์ผ ๋•Œ๋งˆ๋‹ค ์ž ๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋‹ค ๋‹ค๋ฅด๊ณ  ๊ฑฐ๊ธฐ์— ๋”ฐ๋ผ ์•ˆ์ „ํ•œ ์˜์—ญ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค ๋‹ค๋ฅธ๋ฐ ๊ทธ ๋•Œ ์•ˆ์ „ํ•œ ์˜์—ญ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋‚˜๋Š” ๋น„๊ฐ€ ์™€์„œ ์ž ๊ธด ๋ถ€๋ถ„๊ณผ ์ด๋ฏธ ๊ฒ€์‚ฌ๋ฅผ ํ•œ ๋ถ€๋ถ„์„ boolean ๋ฐฐ์—ด์—์„œ true ๋ถ€๋ถ„์ด๋ผ ์„ค์ •ํ•˜๊ณ  ์™„์ „ํƒ์ƒ‰์„ ํ•˜๋ฉฐ false ๋ถ€๋ถ„์—์„œ dfs ํƒ์ƒ‰์„ ํ•ด์ฃผ์—ˆ๋‹ค.
dfs ํƒ์ƒ‰ ํ•œ ๋ฒˆ ํ•  ๋•Œ๋งˆ๋‹ค ์นด์šดํŒ…์„ ํ•ด์ฃผ์–ด ๋น„์˜ ์–‘๋งˆ๋‹ค ์นด์šดํŒ…๋“ค์„ ๋น„๊ตํ•ด ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ–ˆ๋‹ค.
dfs, bfs ์–ด๋Š ๊ฒƒ์„ ์“ฐ๋‚˜ ์ƒ๊ด€์—†์ง€๋งŒ ๋‚˜๋Š” dfs ๊ฐ€ ๋” ํŽธํ•ด์„œ dfs๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: