최대 부분 직사각형
면접 대비시간 제한1초메모리 제한128 MB
정수로 이루어진 N 곱하기 N 행렬에서 원소 합이 가장 큰 직사각형 부분 영역을 찾아 그 합을 출력한다.
문제
양수와 음수가 섞인 2차원 정수 배열이 주어진다. 부분 직사각형은 전체 배열 안에 놓인, 크기가 이상인 연속된 직사각형 영역을 말한다. 직사각형의 합은 그 직사각형에 포함된 모든 원소의 합이다. 이 문제에서 합이 가장 큰 부분 직사각형을 최대 부분 직사각형이라고 부른다.
예를 들어, 다음 배열에서
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
최대 부분 직사각형은 왼쪽 아래에 있는
9 2
-4 1
-1 8
이며, 그 합은 15이다.
입력
입력은 크기의 정수 배열을 나타낸다. 첫 줄에는 정사각형 2차원 배열의 크기를 나타내는 양의 정수 이 하나 주어진다. 이어서 배열을 이루는 개의 정수가 공백(스페이스와 줄바꿈)으로 구분되어 주어진다. 이 정수들은 행 우선(row-major) 순서로, 즉 첫 번째 행의 값들을 왼쪽에서 오른쪽으로, 그다음 두 번째 행의 값들을 왼쪽에서 오른쪽으로 나열하는 식으로 주어진다. 은 최대 100까지 가능하다. 배열의 각 정수는 범위에 있다.
출력
최대 부분 직사각형의 합을 출력한다.