가장 큰 정사각형 찾기

function solution(board) {
  // board의 원소가 전부 0이거나 할 수 있기 때문에
  // 전부 순회돌면서 max의 초기값을 찾아주어야 함
  let max = -Infinity;
  for (let row = 0; row < board.length; row++) {
    for (let col = 0; col < board[0].length; col++) {
      if (board[row][col] > max) {
        max = board[row][col];
      }
    }
  }
  for (let row = 1; row < board.length; row++) {
    for (let col = 1; col < board[0].length; col++) {
      if (board[row][col] != 0) {
        const left = board[row][col - 1];
        const top = board[row - 1][col];
        const diagonal = board[row - 1][col - 1];
        board[row][col] = Math.min(diagonal, Math.min(left, top)) + 1;
        if (board[row][col] > max) {
          max = board[row][col];
        }
      }
    }
  }
  return max * max;
}

0개의 댓글