# HackerRank 2D Arrays | JS Solution

### Problem

HackerRank detailed problem description can be found here.

### Inputs & Outputs

/*
input {array} arr - 6x6 2d array
output {number} - maximum hourglass sum
*/

### Test Case

let arr = [
[1, 1, 1, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0],
[0, 0, 2, 4, 4, 0],
[0, 0, 0, 2, 0, 0],
[0, 0, 1, 2, 4, 0]
];

We should keep in mind that the numbers inside the array can be negative and therefore we can use one of the following ways to account for that:

1. EITHER Set initial maxSum to -63 like so let maxSum = -63. -63 is the maximum negative sum that can be reached based on the algorithm constrains (-9 * 7 numbers in the hourglass)
2. OR if (maxSum < sum || i === 0 && j == 0) {maxSum = sum;} to make sure we set maxSum to sum on the very first iteration
3. OR if (maxSum === undefined || maxSum < sum) {maxSum = sum;} (used in the solution below) which, similarly to the second way, will set the maxSum to sum on the very first iteration, when maxSum is undefined

### JavaScript Solution

function main() {
let arr = Array(6); // typeof arr -> 'object'

for (let i = 0; i < 6; i++) {
arr[i] = readLine().split(' ').map(arrTemp => parseInt(arrTemp, 10));
}

let maxSum;
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 4; j++) {
let sum = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] // 1st row
+ arr[i + 1][j + 1] // 2nd row
+ arr[i + 2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2]; // 3rd row

if (maxSum === undefined || maxSum < sum) {
maxSum = sum;
}
}
}
console.log(maxSum);
}

### Resources

1. 2D Arrays algorithm by HackerRank
2. JavaScript For Loop by W3Schools