풀이
d[i][j] = min(d[i-1][j], d[i][j-1], d[i-1][j-1] (if a[i][j] != 0)
코드
#include <cstdio>
#include <algorithm>
int n, m, i, j, r, a, d[1003][1003];
int main() {
scanf("%d %d", &n, &m);
for (i = 1; i <= n; i++) for (j = 1; j <= m; j++) {
scanf("%1d", &a);
if (!a) continue;
d[i][j] = std::min({ d[i-1][j],d[i][j-1],d[i-1][j-1] }) + 1;
r = std::max(r, d[i][j]);
}
printf("%d", r*r);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이