[Programmers] P12905 가장 큰 정사각형 찾기

Question

Language: Python

Difficulty: Gold 5

해당 좌표의 값이 1인 경우, 왼쪽, 위쪽, 왼쪽 대각선 위의 값을 비교해서, 해당 좌표를 끝점으로 하는 가장 큰 정사각형의 길이를 구할 수 있다.

p12905

위의 동작과정에 대한 예시를 보면 아래와 같이 board가 초기화되는 것을 확인할 수 있고, 최대 길이가 3인 정사각형이 존재함을 확인할 수 있다.

p12905_2

Solution

def solution(board):
    result=0
    n_rows=len(board)
    n_cols=len(board[0])
    for row in range(1,n_rows):
        for col in range(1,n_cols):
            if board[row][col]==0:
                continue
            board[row][col]=min(board[row-1][col],board[row][col-1],board[row-1][col-1])+1
            result=max(result,board[row][col])
    if n_rows==1 and n_cols==1 and board[0][0]==1:
        result=1
    return result**2

댓글남기기