Menyelesaikan soal leetcode: Difference Between Element Sum and Digit Sum of an Array

Tulusibrahim
2 min readAug 13, 2023
Photo by John Cameron on Unsplash

Mengerjakan soal leetcode itu susah susah gampang, kadang ada soal easy yang memang menurut saya gampang dan bisa langsung solved, tapi ada juga soal easy yang sampe setengah jam pun saya gabisa dapet solusinya🤣

Kali ini saya akan share gimana caranya menyelesaikan salah satu soal dengan difficulty easy, Difference Between Element Sum and Digit Sum of an Array menggunakan bahasa javascript. Untuk detail soal bisa di cek di link nya ya.

Input

nums = [1,15,6,3]

Step 1: Element sum

Untuk mendapatkan element sum, caranya cukup simple hanya dengan memanfaatkan built in array function di js yaitu reduce. Untuk case input diatas, berarti ini akan menjumlahkan 1 + 15 + 6 + 3.

let elSum = nums.reduce((a,b) => a+b)

Step 2: Digit sum

Untuk mendapatkan digit sum dengan case input diatas, ini berarti kita harus menjumlahkan 1 + 1 + 5 + 6 + 3. Untuk element dengan jumlah 1 digit tidak masalah, tapi ada case dimana element lebih dari 1 digit (15), kita harus memecah angka 15 menjadi 1 dan 5.

Pertama kita akan loop array nums dengan method map dan menjadikan semua integer menjadi string

nums.map(v => v.toString())

Di posisi ini, angka 15 menjadi “15”, lalu kita split string tersebut agar menjadi array

nums.map(v => v.toString().split(''))

Di posisi ini, angka 15 menjadi [“1”, “5”], karna ini bentuknya sudah menjadi array, kita bisa menggunakan method reduce untuk menjumlahkan angka-angka didalam array tersebut, mirip seperti di step 1.

nums.map(v => v.toString().split('').reduce((a, b) => parseInt(a) + parseInt(b)))

Di posisi ini, [“1”, “5”] sudah menjadi 6 karna sudah kita reduce. Karna method .map me return sebuah array, kita bisa melakukan reduce lagi untuk mendapatkan total dari digit

nums.map(v => v.toString().split(‘’).reduce((a,b)=>parseInt(a)+parseInt(b))).reduce((a,b)=>parseInt(a)+parseInt(b))

Agar code nya menjadi readable, kita assign value dari step 1 dan 2 ke variable masing-masing

let elSum = nums.reduce((a,b)=>a+b)
let dgSum = nums.map(v => v.toString().split('').reduce((a,b)=>parseInt(a)+parseInt(b))).reduce((a,b)=>parseInt(a)+parseInt(b))

Lalu return pengurangan dari elSum dan dgSum dengan hasil absolute

return Math.abs(elSum - dgSum)

Full code:

var differenceOfSum = function(nums) {
let elSum = nums.reduce((a, b)=> a + b)
let dgSum = nums.map(v => v.toString().split('').reduce((a,b)=>parseInt(a)+parseInt(b))).reduce((a,b)=>parseInt(a)+parseInt(b))

return Math.abs(elSum - dgSum)
};

Selesai👍

--

--

Tulusibrahim

Frontend engineer, usually post some thought once in a while.