Written by
최태열
on
on
[Python][프로그래머스][Level2] 가장 큰 정사각형 찾기
[Python][프로그래머스][Level2] 가장 큰 정사각형 찾기
코드
def solution(board):
for x in range(1,len(board)):
for y in range(1,len(board[0])):
if board[x][y]:
board[x][y]=min(board[x-1][y],board[x-1][y-1],board[x][y-1])+1
return max([max(i) for i in board])**2
dp로 풀었다.
board[x][y]가 1일 때, board[x-1][y],board[x-1][y-1],board[x][y-1]가 모두 1이어야 board[x][y] 에서 가장 큰 정사각형의 한변의 길이는 2가 된다.
마찬 가지로 board[x][y]가 1일 때, board[x-1][y],board[x-1][y-1],board[x][y-1]가 모두 2라면 가장 큰 정사각형의 한변의 길이는 3이 된다.
한개라도 0이거나 1이라면 다음 크기로 커질 수 없다.
이렇게 board의 위치별로 길이를 갱신해서
가장 긴 길이의 제곱이 답이 된다.
Discussion and feedback