프로그래머스 가장 큰 정사각형 찾기 자바스크립트

버건디·2023년 8월 21일
0

프로그래머스

목록 보기
63/66
post-thumbnail

문제 링크


- 내 풀이 (틀림)

function solution(board) {
  let maxLen = 0;
  let m = board.length;
  let n = board[0].length;

  for (let i = 1; i < m; i++) {
    for (let j = 1; j < n; j++) {
      let minNum = Math.min(
        board[i - 1][j],
        board[i][j - 1],
        board[i - 1][j - 1]
      );

      board[i][j] = minNum + 1;

      maxLen = Math.max(maxLen, board[i][j]);
    }
  }

  return maxLen * maxLen;
}

- 정답 코드

function solution(board) {
  let maxLen = 0;
  let m = board.length;
  let n = board[0].length;

  if (m <= 1 || n <= 1) {
    return 1;
  }

  for (let i = 1; i < m; i++) {
    for (let j = 1; j < n; j++) {
      if (board[i][j] === 0) {
        continue;
      } else {
        let minNum = Math.min(
          board[i - 1][j],
          board[i][j - 1],
          board[i - 1][j - 1]
        );

        board[i][j] = minNum + 1;

        if (board[i][j] > maxLen) {
          maxLen = board[i][j];
        }
      }
    }
  }

  return maxLen * maxLen;
}

가로나 세로 길이가 1이라면 무조건 정사각형 넓이는 1일테니 1을 리턴해주고,

board[i][j]가 0이라면 정사각형 조건이 성립되지 않는다.

이러한 예외 처리들을 해주지 않아서 실패로 나왔었다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글

관련 채용 정보