N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.
첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.
첫째 줄에 정답 정사각형의 크기를 출력한다.
import sys
input = sys.stdin.readline
def find_squre(s): # 이 부분이 제일 중요
for i in range(n-s+1):
for j in range(m-s+1):
if matrix[i][j] == matrix[i][j+s-1] == matrix[i+s-1][j] == matrix[i+s-1][j+s-1]:
return True
return False
n, m =map(int, input().split())
matrix = [list(map(int, input().strip())) for _ in range(n)]
size = min(n, m)
for i in range(size, 0, -1):
if find_squre(i):
print(i**2)
break
n과 m중 작은 수를 size에 넣고 그 size를 -1씩 하면서 find_squre함수에 넣어 정사각형을 이룬다면 그 때의 넓이를 출력한다.