LeetCode in Kotlin

3723. Maximize Sum of Squares of Digits

Medium

You are given two positive integers num and sum.

A positive integer n is good if it satisfies both of the following:

The score of a good integer n is the sum of the squares of digits in n.

Return a string denoting the good integer n that achieves the maximum score. If there are multiple possible integers, return the maximum one. If no such integer exists, return an empty string.

Example 1:

Input: num = 2, sum = 3

Output: “30”

Explanation:

There are 3 good integers: 12, 21, and 30.

The maximum score is 9, which is achieved by the good integer 30. Therefore, the answer is "30".

Example 2:

Input: num = 2, sum = 17

Output: “98”

Explanation:

There are 2 good integers: 89 and 98.

The maximum score is 145. The maximum good integer that achieves this score is 98. Therefore, the answer is "98".

Example 3:

Input: num = 1, sum = 10

Output: “”

Explanation:

There are no integers that have exactly 1 digit and whose digits sum to 10. Therefore, the answer is "".

Constraints:

Solution

class Solution {
    fun maxSumOfSquares(places: Int, sum: Int): String {
        var ans = ""
        val nines = sum / 9
        if (places < nines) {
            return ans
        } else if (places == nines) {
            val remSum = sum - nines * 9
            if (remSum > 0) {
                return ans
            }
            ans = "9".repeat(nines)
        } else {
            val remSum = sum - nines * 9
            ans = "9".repeat(nines) + remSum
            val extra = places - ans.length
            if (extra > 0) {
                ans = ans + ("0".repeat(extra))
            }
        }
        return ans
    }
}