https://programmers.co.kr/learn/courses/30/lessons/12905#
function solution(board)
{
const x=board.length;
const y=board[0].length;
let max=Number.MIN_SAFE_INTEGER;
//제한사항(현대수학에서는 0도 자연수로 보는 경우도있음)
if(x<=1 || y<=1){
for(let i=0; i<x; i++){
for(let j=0; j<y; j++){
if(board[i][j]===1) return 1; //1이 하나라도 있는 경우
}
}
return 0; //모두 0인경우
}
//(1,1)부터
for(let i=1; i<x; i++){
for(let j=1; j<y; j++){
if(board[i][j]>=1){
const up=board[i-1][j];
const upLeft=board[i-1][j-1];
const left=board[i][j-1];
const min=Math.min(up, upLeft, left)+1;
board[i][j]=min;
max=Math.max(max, min);
}
else max=Math.max(max, 0); //모두 0인경우를 고려
}
}
return Math.pow(max, 2); //max**2
}