HackerRank.com Challenge – Diagonal Difference

This HackerRank challenge took some thinking. I needed to be able to accept a variable size multidimensional array, add the diagonals, and then find the absolute value of their difference. I haven’t needed to work with multidimensional arrays much in the past, so it took some working through the algorithm to ensure I was incrementing my values in the correct spots.

These challenges are great mental floss for coding while I learn Java.

 

import java.io.*;
import java.util.*;
import java.lang.Math;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner in = new Scanner(System.in);
        
        //get the value that defines the size of the input matrix
        int n = in.nextInt();
        
        int[][] numberArray = new int[n][n];
        
        String input = in.nextLine();;
        
        int currentDiagnalPosition1 = 0, currentDiagnalPosition2 = n-1;
        int runningTotal1 = 0, runningTotal2 = 0;
        
        for(int j = 0; j < n; j++)
        {       
            input = in.nextLine();
            
            for(int k = 0; k < n; k++)
            {
                String[] data = input.trim().split("\\s+");
                
                numberArray[j][k] = Integer.parseInt(data[k]);
                
                if(currentDiagnalPosition1 == k)
                {
                    runningTotal1 = runningTotal1 + numberArray[j][k];
                }
                if(currentDiagnalPosition2 == k)
                {
                    runningTotal2 = runningTotal2 + numberArray[j][k];
                }                
                
            } 
            currentDiagnalPosition1 = currentDiagnalPosition1 + 1;
            currentDiagnalPosition2 = currentDiagnalPosition2 - 1;
        }
        
        System.out.println(Math.abs(runningTotal1-runningTotal2));
       
    }
}

Comments are closed.