1번 문제.
https://www.acmicpc.net/problem/1051
-> 숫자 정사각형
import sys
# N x M 값 입력
n, m = map(int, sys.stdin.readline().split())
# 사각형 꼭짓점들의 값 입력
rect = [list(map(int, sys.stdin.readline().strip())) for _ in range(n)]
# N과 M 값에서 최솟값을 기준으로 정사각형이 최대가 될 수 있음
d = min(n, m)
# 정사각형의 최대값은 1부터 시작
max_size = 1
# i번째에서
for i in range(n):
# j번째에서
for j in range(m):
# n, m 최솟값 중 최대 크기의 정사각형을 찾기 위해
for k in range(d):
# 만약 [i][j]번째의 값과 [i-k][j]번째 값과
#[i][j-k]번째 값과 [i-k][j-k]값이 같다면
# 가장 큰 정사각형을 찾을 수 있다.
if rect[i][j] == rect[i-k][j] == rect[i][j-k] == rect[i-k][j-k]:
# k 값으로 생각했더니, 값이 전부 1씩 작게 나옴..
max_size = max(max_size, (k+1)**2)
print(max_size)
=======================================================
답이... 나오는데 틀림
import sys
# N x M 값 입력
n, m = map(int, sys.stdin.readline().split())
# 사각형 꼭짓점들의 값 입력
rect = [list(map(int, sys.stdin.readline().strip())) for _ in range(n)]
# N과 M 값에서 최솟값을 기준으로 정사각형이 최대가 될 수 있음
d = min(n, m)
# 정사각형의 최대값은 1부터 시작
max_size = 1
# i번째에서
for i in range(n):
# j번째에서
for j in range(m):
# n, m 최솟값 중 최대 크기의 정사각형을 찾기 위해
for k in range(d):
# 만약 [i][j]번째의 값과 [i+k][j]번째 값과
#[i][j+k]번째 값과 [i+k][j+k]값이 같다면
# 가장 큰 정사각형을 찾을 수 있다.
if ((i + k) < n) and ((j + k) < m) and
(rect[i][j] == rect[i][j + k] == rect[i + k][j] == rect[i + k][j + k]):
# k 값으로 생각했더니, 값이 전부 1씩 작게 나옴..
max_size = max(max_size, (k+1)**2)
print(max_size)
=======================================================
그냥 변경했더니... 된다..... 이유는 다음에 찾는걸로
오늘은 여기까지