알고리즘 문제/CodeWar

Weight for weight

BEstyle 2022. 10. 11. 12:48

DESCRIPTION:

My friend John and I are members of the "Fat to Fit Club (FFC)". John is worried because each month a list with the weights of members is published and each month he is the last on the list which means he is the heaviest.

I am the one who establishes the list so I told him: "Don't worry any more, I will modify the order of the list". It was decided to attribute a "weight" to numbers. The weight of a number will be from now on the sum of its digits.

For example 99 will have "weight" 18, 100 will have "weight" 1 so in the list 100 will come before 99.

Given a string with the weights of FFC members in normal order can you give this string ordered by "weights" of these numbers?

Example:

"56 65 74 100 99 68 86 180 90" ordered by numbers weights becomes: 

"100 180 90 56 65 74 68 86 99"

When two numbers have the same "weight", let us class them as if they were strings (alphabetical ordering) and not numbers:

180 is before 90 since, having the same "weight" (9), it comes before as a string.

All numbers in the list are positive numbers and the list can be empty.

Notes

  • it may happen that the input string have leading, trailing whitespaces and more than a unique whitespace between two consecutive numbers
  • For C: The result is freed.

def order_weight(string):
    alist=string.split(' ')
    blist=[]
    temp=0
    for i in range(len(alist)):
        for j in alist[i]:
            temp+=int(j)
        blist.append(temp)
        temp=0
        
    sortVal(blist,alist)
    sortAl(alist,blist)
    return ' '.join(alist)
    
    
    
def sortVal(x,y):
    temp=0
    temp2=""
    for j in range(len(x)):
        for i in range(len(x)-1):
            if x[i]>=x[i+1]:
                temp=x[i]
                x[i]=x[i+1]
                x[i+1]=temp
                temp=y[i]
                y[i]=y[i+1]
                y[i+1]=temp

def sortAl(x,y):
    temp=""
    for j in range(len(x)):
        for i in range(len(x)-1):
            if y[i]==y[i+1]:
                if x[i]>x[i+1]:
                    temp=x[i]
                    x[i]=x[i+1]
                    x[i+1]=temp