알고리즘 문제풀이

가장 큰 정사각형(백준1915)

wiojfe 2024. 1. 7. 18:26

https://www.acmicpc.net/problem/1915

 

1915번: 가장 큰 정사각형

첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다.

www.acmicpc.net

import sys
input = sys.stdin.readline 
n,m = map(int, input().split())
ans = 0 
arr = [input().rstrip() for _ in range(n)]
dp =[[0]*m for _ in range(n)]
for i in range(n):
    for j in range(m) :
        if i>0 and j>0 and arr[i][j] == '1' :
            dp[i][j]= 1+ min(int(arr[i-1][j-1]), int(arr[i-1][j]) , int(arr[i][j-1]))
        else : 
            dp[i][j] = int(arr[i][j])
        ans = max(ans, dp[i][j]) 
print(ans*ans)