• + 0 comments

    Here's my solution : DP unsing python

    def equal(arr):
        # Write your code here
        arr.sort()
        arr_len = len(arr)
        diff_table = [0]*arr_len
        for i in range(1, arr_len):
            # acumulate diff
            diff_table[i] = diff_table[i-1] + arr[i] - arr[i-1]
            
        final_ans = [float('inf')]
    
        def caculate_ans(add_val, final_ans):
            ans = 0
            if add_val != 0:
                ans += 1
    
            for i in range(1, arr_len):
                # acumulate diff
                cur_diff = diff_table[i] + add_val
                ans += cur_diff//5
                cur_diff = cur_diff%5
                ans += cur_diff//2
                cur_diff = cur_diff%2
                ans += cur_diff//1
                cur_diff = cur_diff%1
            final_ans[0] = ans if ans < final_ans[0] else final_ans[0]
        # we can add 1, 2 or 5 equally to diff_table from index 1 to arr_len (add all but index 0)
        caculate_ans(0, final_ans)
        caculate_ans(1, final_ans)
        caculate_ans(2, final_ans)
        caculate_ans(5, final_ans)
    
        return final_ans[0]