hacker-rank | min-max sum of array

find the minimum and maximum values that can be calculated by summing exactly four of the five integers. Then print the respective minimum and maximum values as a single line of two space-separated long integers.

Example:
arr = [1,3,5,7,9]

The minimum sum is 1+3+5+7 = 16 and the maximum sum is 3+5+7+9 = 24. The function prints

16 24

Output Format
Print two space-separated long integers denoting the respective minimum and maximum values that can be calculated by summing exactly four of the five integers. (The output can be greater than a 32-bit integer.)

Sample Input
1 2 3 4 5

Sample Output
10 14

Explanation:

The numbers are 1, 2, 3, 4, and 5. Calculate the following sums using four of the five integers:

  • Sum everything except 1, the sum is 1+2+3+4+5 = 14.
  • Sum everything except 2, the sum is 1+3+4+5 = 13.
  • Sum everything except 3, the sum is 1+2+4+5 = 12.
  • Sum everything except 4, the sum is 1+2+3+5 = 11.
  • Sum everything except 5, the sum is 1+2+3+4 = 10.

From the above calculation, 10 is the minimum and 14 is maximum.

Code language => Python

Solutions:

arr = [1,3,5,7,9]

def sumOfarray(arry):
    s = 0
    l = len(arry)
    for x in range(0,l):
        s =s+ arry[x]
    return s


def findminandmax(arr):
    sumOfarr = []
    for i in range(0, len(arr)):
        a  = arr[:]
        a.pop(i)
        sumOfarr.append(sumOfarray(a))
    return print(str(min(sumOfarr)) + " "+ str(max(sumOfarr)))

findminandmax(arr)

###output###
# 16 24

Note: we use a deep clone([:]) or deep copy for changing an array without affecting previous array values.

Example for deep clone:
1st case without deep clone

# Example for deep clone:
a = [5, 2]
b  =  a
b[0] = 100
print(a)
###output###
#[100 ,2]

2nd case with a deep clone [:]

# if we dont want to change variable a, then
a = [5,2]
b = a[:]
b[0] = 100
print(a)
###output###
#[5,2]