이전 행/열 인덱스 값이 1일 때를 확인, 그 순간까지 얻을 수 있는 가장 긴 정사각형의 (가능한) 변 길이를
dp
를 통해 기록해두고 전역 변수와 비교해가면서 답을 구한다.
import Foundation
func solution(_ board:[[Int]]) -> Int {
let rowCount = board.count
let colCount = board[0].count
var dp = Array(repeating: Array(repeating: 0, count: colCount + 1), count: rowCount + 1)
var answer = 0
for row in 1..<rowCount+1 {
for col in 1..<colCount+1 {
if board[row-1][col-1] == 1 {
dp[row][col] = min(dp[row-1][col], dp[row][col-1], dp[row-1][col-1]) + 1
answer = max(answer, dp[row][col])
}
}
}
return answer * answer
}