Advertisement
saurav_kalsoor

Sort By Digit Sum - KOTLIN

Jan 25th, 2022
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Author : Saurav Kalsoor
  2. // Sort By Digit Sum - KOTLIN
  3.  
  4. import java.util.*
  5.  
  6. var sc: Scanner = Scanner(System.`in`)
  7.  
  8. fun main() {
  9.     val n: Int = sc.nextInt()
  10.     val arr: ArrayList<Int> = java.util.ArrayList<Int>()
  11.     for (i in 0 until n) {
  12.         val input: Int = sc.nextInt()
  13.         arr.add(input)
  14.     }
  15.  
  16.     val result: ArrayList<Int> = sortByDigits(arr)
  17.  
  18.     for (i in 0 until n)
  19.         print(result.get(i).toString() + " ")
  20.     println()
  21. }
  22.  
  23. fun sortByDigits(arr: ArrayList<Int>): ArrayList<Int> {
  24.     Collections.sort(arr, SortBySumOfDigits())
  25.     return arr
  26. }
  27.  
  28. internal class SortBySumOfDigits : Comparator<Int> {
  29.     override fun compare(a: Int, b: Int): Int {
  30.         val sumA = getSum(a)
  31.         val sumB = getSum(b)
  32.         return if (sumA == sumB) {
  33.             a - b
  34.         } else {
  35.             sumA - sumB
  36.         }
  37.     }
  38.  
  39.     fun getSum(num: Int): Int {
  40.         var n = num
  41.         var sum = 0
  42.         while (n > 0) {
  43.             sum = sum + n % 10
  44.             n = n / 10
  45.         }
  46.         return sum
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement