Algorithm
문제의 요구조건을 보았을 때, 최대 1000 * 1000 크기의 배열에서 1로 이루어진 가장 큰 정사각형을 찾아야 한다.
단순히 모든 인덱스를 순회 한다면 1,000,000 번이 걸리고 여기서 최대 정사각형의 크기를 찾기 위해서는 현재 인덱스가 (i
, j
)일 때, 최대 i
곱하기 j
의 연산을 추가로 해야 하므로 대략 1000 ** 4의 시간이 걸려서 시간 초과가 발생한다.
이를 해결하기 위해 DP를 사용하여 [N][M]
부터 [0][0]
까지 인접한 인덱스 (오른쪽, 아래쪽, 오른쪽 아래 대각선)을 확인하며 1로 이루어진 정사각형의 크기를 빠르게 구하기로 했다.
유용했던 반례 : https://www.acmicpc.net/board/view/48661
어려워 보였지만 DP를 떠올리니 금방 풀 수 있었다.