백준 문제 링크
숫자 정사각형
- 가장 큰 정사각형은 N과 M 중 작은 값이 될 수 밖에 없다.
- 초기값 size = min(N,M)으로 설정하고, 큰 수 부터 작은 수로 내려오면서
좌표 + s가 N과 M의 범위 안에 있고, 꼭짓점이 다 같을 때
max_size를 s+1 ** 2로 바꿔준다.- max_size가 0이면 1을, 0이 아니면 max_size를 출력한다.
N, M = map(int, input().split())
lst = []
for _ in range(N):
lst.append(list(map(int, input())))
size = min(N,M)
max_size = 0
for s in range(size, 0, -1):
for i in range(N):
for j in range(M):
if (i + s < N) and (j + s < M) and (lst[i][j] == lst[i][j+s] == lst[i+s][j] == lst[i+s][j+s]):
print(lst[i][j])
if max_size < ((s+1) ** 2):
max_size = (s+1) ** 2
if max_size == 0:
print(1)
else:
print(max_size)