[프로그래머스] 가장 큰 정사각형Lv.2 - Python
나의 풀이
def solution(board):
answer = 0
for i in range(1, len(board)):
for j in range(1, len(board[i])):
if board[i][j] != 0:
board[i][j] += min(min(board[i - 1][j - 1], board[i - 1][j]), board[i][j - 1])
for i in board:
if answer < max(i):
answer = max(i)
return answer ** 2
- 현재 위치의 값이 0이 아니면서 대각선, 왼쪽, 위쪽이 0이 아니라면 대각선, 왼쪽, 위쪽 의 값 중 가장 작은 값을 현재 위치의 값에 더해준다. 행과 열의 0인덱스는 대각선, 왼쪽, 위쪽을 전부 계산할 수 없기에 1행 1열 부터 시작한다.
- 왼쪽, 대각선, 위쪽이 모두 1 이상이라면, 해당 값 중 가장 작은 값을 더해나간다.
- 이렇게 반복하다보면 이어지는 변의 길이를 갖게 된다.
- 이 중에서 가장 긴 변을 찾아서 넓이를 구해주면 된다.
Author And Source
이 문제에 관하여([프로그래머스] 가장 큰 정사각형Lv.2 - Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goshk95/프로그래머스-가장-큰-정사각형Lv.2-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)