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

1915 : 가장 큰 정사각형

풀이

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, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-04-04 20:01

Read more posts by this author