문제 링크

풀이 과정

전체 코드

def solution(board):
    rows, cols = len(board), len(board[0])
    dp = [[board[i][j] for j in range(cols)] for i in range(rows)]
    
    for i in range(1, rows):
        for j in range(1, cols):
            if board[i][j] != 0:
                dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1
    
    max_len = max(max(row) for row in dp)

    return max_len ** 2