[프로그래머스] 코딩테스트 연습 - 57

krkorklo·2022년 2월 15일
0

프로그래머스

목록 보기
57/78

level 2 - 가장 큰 정사각형 찾기

1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요.

입출력 예시
board: [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]]
-> 9

function solution(board)
{
    var answer = 1;
    var x_len = board.length;
    var y_len = board[0].length;
    
    if (is_zero(board)) return 0;
    function is_zero(board) {
        for(var i=0; i<x_len; i++) {
            for(var j=0; j<y_len; j++) {
                if (board[i][j] == 1) return false;
            }
        }
        return true;
    }
    
    for(var i=1; i<x_len; i++) {
        for(var j=1; j<y_len; j++) {
            if (board[i][j] != 1) continue;
            board[i][j] = Math.min(board[i-1][j], board[i][j-1], board[i-1][j-1]) + 1;
            answer = Math.max(answer, board[i][j]);
        }
    }

    return answer ** 2;
}

0개의 댓글