GO challenges - Diagonal Difference problem

Posted on Apr 11, 2019   ∣  1 min read  ∣  GO challenges

Problem

HackerRank

Given a square matrix, calculate the absolute difference between the sums of its diagonals. For example, the square matrix arr is shown below:

1 2 3
4 5 6
9 8 9 

The left-to-right diagonal = | 1 + 5 + 9 | = 15 . The right to left diagonal = | 3 + 5 + 9 | = 17 . Their absolute difference is= | 15 - 17 | = 2.

Function description Complete the Diagonal Difference function in the editor below. It must return an integer representing the absolute diagonal difference. diagonalDifference takes the following parameter:

arr: an array of integers

Input Format

The first line contains a single integer,n, the number of rows and columns in the matrix . Each of the next lines describes a row,arr[i], and consists of space-separated integers arr[i][j] .

Output Format

Print the absolute difference between the sums of the matrix’s two diagonals as a single integer.

Sample Input :

3
11 2 4
4 5 6
10 8 -12

Sample Output :

15

Explanation :

The primary diagonal is:

11
   5
     -12

Sum across the primary diagonal: 11 + 5 - 12 = 4 The secondary diagonal is:

     4
   5
10

Sum across the secondary diagonal: 4 + 5 + 10 = 19 Difference: |4 - 19| = 15 Note: |x| is the absolute value of x

Solution

    package main

    import (
        "fmt"
        "math"
    )

    func main(){

        var n int
        fmt.Scan(&n)

        a := make([][]int, n)

        lsum,rsum := 0,0

        for i:=0;i<n;i++{
            a[i] = make([]int,n)
            for j:=0;j<n;j++{
                fmt.Scan(&a[i][j])
                if i == j {
                    lsum += a[i][j]
                }
                if i+j == n-1 {
                    rsum += a[i][j]
                }
            }
        }

        diff := math.Abs(float64(lsum - rsum))
        fmt.Println(diff)


    }