function solution(board) {
let maxLen = 0;
let m = board.length;
let n = board[0].length;
for (let i = 1; i < m; i++) {
for (let j = 1; j < n; j++) {
let minNum = Math.min(
board[i - 1][j],
board[i][j - 1],
board[i - 1][j - 1]
);
board[i][j] = minNum + 1;
maxLen = Math.max(maxLen, board[i][j]);
}
}
return maxLen * maxLen;
}
function solution(board) {
let maxLen = 0;
let m = board.length;
let n = board[0].length;
if (m <= 1 || n <= 1) {
return 1;
}
for (let i = 1; i < m; i++) {
for (let j = 1; j < n; j++) {
if (board[i][j] === 0) {
continue;
} else {
let minNum = Math.min(
board[i - 1][j],
board[i][j - 1],
board[i - 1][j - 1]
);
board[i][j] = minNum + 1;
if (board[i][j] > maxLen) {
maxLen = board[i][j];
}
}
}
}
return maxLen * maxLen;
}
가로나 세로 길이가 1이라면 무조건 정사각형 넓이는 1일테니 1을 리턴해주고,
board[i][j]가 0이라면 정사각형 조건이 성립되지 않는다.
이러한 예외 처리들을 해주지 않아서 실패로 나왔었다.