Soal Hacker Rank 4
Diagonal Difference
Okayyy kita coba lagi soal yang lain dari Hacker Rank. Soalnya sebagai berikut
“Diagonal Difference
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 . Their absolute difference is |15–17| .
Function description
Complete the function diagonalDifference 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 arr .
Each of the next n lines describes a row, arr[i] , and consists of space-separated integers arr[i][j].
Constraints
Output Format
-100 ≤arr[i][j]<100
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”
Singkatnya soalnya minta program seperti ini.
- Misal kita punya matrik 3 x 3 , jumlah kolom dan baris sama seperti matrik dibawah.
1 2 3
4 5 6
9 8 9
2. Cari jumlah anggota diagonal dari kiri atas sampai kanan bawah 1 + 5 + 9 = 15.
3. Cari jumlah anggota diagonal dari kanan atas sampai kiri bawah 3 + 5 + 9 = 17
4. Cari selisih jumlah kiri atas kana bawah dan kanan atas kiri bawah 15 -17 = -2.
5. Cari nilai absolut dari langkah 4 |-2|=2. absolut itu jikan negatif maka dibuang negatif nya kalau positif tetap positif.
Berikut adalah program yang saya buat dalam bahasa Go dan dinyatakan benar oleh Hacker Rank.
Penjelasan Program 1.
- Baris 1 dan 35 deklarasi fungsi diagonalDifference dengan arguman tipe data Slice dua dimensi dengan tipee data int32.
- Baris 4 deklarasi variabel diagSum1 dengan tipe data int32 untuk menampung jumlah anggota diagonal kiri atas sampai kanan bawah.
- Baris 5 deklarasi variabel diagSum2 dengan tipe data int32 untuk menampung jumlah anggota diagonal kana atas sampai kiri bawah.
- Baris 7 dan 3 Looping i=0 sampai i<len(arr) atau panjang Slice arr.
- Baris 8 dan 21 Looping i=0 sampai i<len(arr) atau panjang Slice arr.
- Baris 11 sampai 13 jika i == j maka diagSum1 ditambah arr[i][j].
- Baris 17 sampai jika i + j == len(arr)- 1 maka diagSum2 ditambah arr[i][j].
- Baris 26 dekalarsi varibel diff sebagai hasil diagSum1-diagSum2.
- Baris 28 sampai 31 jika diff negatif maka jadikan positif.
- Baris 33 nilai balik diagonalDifference adalah diff.
Simulasi program 1.
- Misal arr[3][3]int32
1 2 3
4 5 6
9 8 9
2. i =0
- j = 0
- jika i == j yaitu 0 == 0 adalah benar maka diagSum1 = diagsum1 + arr[0][0] = 0+ 1=1
- jika i + j == len(arr)-1 atau 0 + 0 == 3–1 maka salah.
- j = 1
- jika i == j yaitu 0 == 1adalah salah.
- jika i + j == len(arr)-1 atau 0 + 1== 3–1 maka salah
- j = 2
- jika i == j yaitu 0 == 2 adalah salah.
- jika i + j == len(arr)-1 atau 0 + 2 == 2–1 maka benar diagSum2 = diagSum2 + arr[0][2]= 0+ 3=3.
3. i =1
- j = 0
- jika i == j yaitu 1== 0 adalah salah.
- jika i + j == len(arr)-1 atau 1+ 0== 3–1 maka salah .
- j = 1
- jika i == j yaitu 1== 1 adalah benar, maka diagSum1 = diagsum1 + arr[1][1] = 1+ 5=6
- jika i + j == len(arr)-1 atau 1+ 1== 3–1 maka benar diagSum2 = diagSum2 + arr[1][1]= 3 + 5=8.
- j = 2
- jika i == j yaitu 0 == 2 adalah salah.
- jika i + j == len(arr)-1 atau 1+ 2 == 3–1 adalah salah.
4. i =2
- j = 0
- jika i == j yaitu 2== 0 adalah salah.
- jika i + j == len(arr)-1 atau 2+ 0== 3–1 maka benar diagSum2 = diagSum2 + arr[0][2]= 8+ 9=17 .
- j = 1
- jika i == j yaitu 2== 1 adalah salah.
- jika i + j == len(arr)-1 atau 1+ 2== 3–1 adalah salah
- j = 2
- jika i == j yaitu 2== 2 adalah benar,maka diagSum1 = diagsum1 + arr[2][2] = 6+19=15
- jika i + j == len(arr)-1 atau 2+ 2 == 3–1 adalah salah.
5. diagSum1-diagSum2 = 17–19 =-2.
6. -2 < 0 maka dipositifkan menjadi 2.
7. jawaban 2.
Okayyy sampai jumpa diblog Hacker Rank berikutnya.