Soal Hacker Rank 4

Diagonal Difference

Neraka ngoding
Neraka Ngoding
4 min readMar 28, 2020

--

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:

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

Sample Output

Explanation

The primary diagonal is:

Sum across the primary diagonal: 11 + 5–12 = 4

The secondary diagonal is:

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.

  1. Misal kita punya matrik 3 x 3 , jumlah kolom dan baris sama seperti matrik dibawah.

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.

Program 1.

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.

  1. Misal arr[3][3]int32

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.

--

--

Neraka ngoding
Neraka Ngoding

Coder terbaik sebatununggal-bandung, west java, indonesia belum terkalahkan selama 15 tahun. “Coder adalah Identitas bukan profesi”