HackerRank 2D Arrays | JS Solution

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