Max Grid Sum

Problem

Numbers are written on the 5*5 grid as shown below.

Screen Shot 2021-06-16 at 12 21 23 PM

Given a grid of N*N, output the largest of the sum of each row, the sum of each column, and the sum of the two diagonals.

input

  • A natural number N is given in the first line (1<=N<=50).
  • From the second line to the N lines, each line is given N natural numbers. Each natural number does not exceed 100.
5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19

output

Outputs the maximum sum.

155

Solution

function solution(arr) {
	let max = Number.MIN_SAFE_INTEGER;
	let cross = 0;
	let revCross = 0;

	for (let i = 0; i < arr.length; i++) {
		let row = arr[i].reduce((sum, cur) => sum + cur);
		let column = 0;

		for (let j = 0; j < arr[0].length; j++) {
			column += arr[j][i];
		}

		cross += arr[i][i];
		revCross += arr[i][arr.length - 1 - i];
		if (max < row) max = row;
		if (max < column) max = column;
	}
	if (max < cross) max = cross;
	if (max < revCross) max = revCross;
	return max;
}
function solution(arr) {
	let answer = Number.MIN_SAFE_INTEGER;
	let n = arr.length;
	let sum1 = (sum2 = 0);

	for (let i = 0; i < n; i++) {
		sum1 = sum2 = 0;
		for (let j = 0; j < n; j++) {
			sum1 += arr[i][j];
			sum2 += arr[j][i];
		}

		answer = Math.max(answer, sum1, sum2);
	}

	sum1 = sum2 = 0;

	for (let i = 0; i < n; i++) {
		sum1 += arr[i][i];
		sum2 += arr[i][n - i - 1];
	}

	answer = Math.max(answer, sum1, sum2);
	return answer;
}
function solution(arr) {
	let answer = Number.MIN_SAFE_INTEGER;
	let n = arr.length;
	let cross = (reverseCross = 0);

	for (let i = 0; i < n; i++) {
		let row = (column = 0);
		for (let j = 0; j < n; j++) {
			row += arr[i][j];
			column += arr[j][i];
		}

		if (answer < row) answer = row;
		if (answer < column) answer = column;

		cross += arr[i][i];
		reverseCross += arr[i][n - 1 - i];
	}

	if (answer < cross) answer = cross;
	if (answer < reverseCross) answer = reverseCross;

	return answer;
}