const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
let [N, M] = input
.shift()
.split(" ")
.map((str) => Number(str));
let board = input.map((arr) => arr.split("").map((str) => Number(str)));
let maxWidth = [1];
for (let i = 0; i < N; i++) {
for (let j = 0; j < M; j++) {
let point = board[i][j];
for (let z = j + 1; z < M; z++) {
if (point === board[i][z]) {
let minusNum = z - j;
if (
// i + 각변을 더했을때 board판을 안넘는지 확인해야함
i + minusNum < N &&
point === board[i + minusNum][j] &&
point === board[i + minusNum][z]
) {
maxWidth.push((minusNum + 1) * (minusNum + 1));
}
}
}
}
}
console.log(Math.max(...maxWidth));
i + board를 했을때 보드판을 넘는지 확인을 하는게 중요했다.
각 꼭지점을 완전 탐색으로 돌면서 한개씩 확인해 준후 각 꼭지점의 차이가 같으면서 숫자들이 같다면 maxWidth 배열에 그 넓이들을 각각 넣어주었다.