GO challenges - Diagonal Difference problem
Problem
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)
}