https://programmers.co.kr/learn/courses/30/lessons/12905
function solution(board)
{
let row_len = board[0].length;
let col_len = board.length;
let answer = 0;
if (row_len < 2 || col_len < 2) return 1;
for (let i = 1; i < col_len; i++) {
for (let j = 1; j < row_len; j++) {
if (board[i][j] > 0) {
let min = Math.min(board[i - 1][j - 1], board[i][j - 1], board[i - 1][j])
board[i][j] = min + 1;
}
answer = Math.max(board[i][j], answer);
}
}
return answer*answer
}
let board = [[0, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [0, 0, 1, 0]];
console.log(solution(board));
처음에 반복문으로 했다가 실패하여 질문게시판을 참고했다. 거기서 다른분의 해설을 참고해 다시 구현하였다.
해당 인덱스의 map 값이 1일 경우 왼쪽, 위쪽, 왼쪽위쪽의 최소값 +1이 현재 길이가된다.
그 후 최대값을 저장해 두었다가 마지막에 넓이를 구할 때 사용한다.