Numbers are written on the 5*5 grid as shown below.
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.
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
Outputs the maximum sum.
155
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;
}