본문 바로가기

코딩테스트

[프로그래머스] level2. 가장 큰 정사각형 찾기 (javascript)

반응형

문제

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

나의 풀이

초기 코드(오답)


function solution(board)
{
    var answer = 0;
    for(let i = 0 ; i< board.length-1;i++){
        for(let j = 0 ; j< board[0].length-1;j++){
        let min = Math.min(board[i][j],board[i+1][j],board[i][j+1])

        if (min > 0){
            board[i+1][j+1] = min+1
        }

        }
        if (answer < Math.max(...board[i+1])){
            answer =Math.max(...board[i+1])
        }
    }

    return Math.pow(answer,2);
}

수정(정답)

function solution(board)
{
    var answer = 0;
    if (board.length < 2 || board[0].length < 2) return 1;
    for(let i = 0 ; i< board.length-1;i++){
        for(let j = 0 ; j< board[0].length-1;j++){
        let min = Math.min(board[i][j],board[i+1][j],board[i][j+1])

        if (min > 0 && board[i+1][j+1] > 0){
            board[i+1][j+1] = min+1
        }

        }
        if (answer < Math.max(...board[i+1])){
            answer =Math.max(...board[i+1])
        }
    }

    return Math.pow(answer,2);
}

자기 자신도 1 이상 이여야된다는걸 빼먹어버렷다.
그리고 길이가 1이면 정사각형이 1이 되므로 따로 쳐리해 주었다.

반응형