
Given an m x n binary matrix filled with 0's and 1's, find the largest square containing only 1's and return its area.
Example 1:
	- Input: matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
	- Output: 4
Example 2:
	- Input: matrix = [["0","1"],["1","0"]]
	- Output: 1
Example 3:
	- Input: matrix = [["0"]]
	- Output: 0
Constraints:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 300
matrix[i][j] is '0' or '1'.

정사각형의 최대 개수를 찾는 것이다.
00부터 nn을 확인하는데 해당 칸의 왼쪽, 위쪽, 왼쪽 대각선을 확인해서 가장 작은 dp값의 + 1 을 해준다.
위 사진을 보고 정확하게 깨닫을 수 있었다.
var maximalSquare = function(matrix) {
    const row=matrix.length;
    const column=matrix[0].length;
 
    if(row<=1&&column<=1){
        return matrix[0][0]
    }
  
    const dp= Array.from({length:row},()=>Array.from({length:column},()=>0))
    
    let max=0;
    for(let i=0 ;i<column;i++){
        if(matrix[0][i]=="1"){
            max=1;
            dp[0][i]=1}
  
    }
    for(let i=0 ;i<row;i++){
        if(matrix[i][0]=="1"){
            max=1;
            dp[i][0]=1}
    }
    
    
    for(let i=1 ;i<row;i++){
        for(let j=1;j<column;j++){
            if(matrix[i][j]=="1"){
                dp[i][j]=Math.min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1])+1;
                max=max<dp[i][j]?dp[i][j]:max
            }
        }
    }
    return max*max
};
dp를 처음 만들 때 첫 Column과, 첫 row를 이용하게 되는데, 그게 전부일 수도 있기 때문에, 예외처리를 해주었다.