코드 복사/붙여넣기 하는 당신이 아름답습니다.

2468 : 안전 영역

풀이

DFS를

멋있게

폼나게

오지게

간지나게

돌려보자.

코드

#include <stdio.h>
#include <string.h>

const int dx[] = { 0,0,1,-1 };
const int dy[] = { 1,-1,0,0 };

int n, w, cnt, ans, mx, a[102][102], b[102][102];

inline int max(int a, int b) { return a > b ? a : b; }

void dfs(int x, int y) {
	b[x][y] = 0;
	for (int i = 0; i < 4; i++) {
		int nx = x + dx[i], ny = y + dy[i];
		if (b[nx][ny] > w) dfs(nx, ny);
	}
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			scanf("%d", &a[i][j]);

	for (int k = 0; k <= 100; k++) {
		memcpy(b, a, sizeof(a));
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				if (b[i][j] > k) {
					w = k, cnt++;
					dfs(i, j);
				}
			}
		}
		ans = max(cnt, ans);
		cnt = 0;
	}

	printf("%d", ans);

	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-12-28 13:30

Read more posts by this author