Athlete sort in python - HackerRank solution

Solution for hackerRank problem Athlete sort in python

Problem :

You are given a spreadsheet that contains a list of N athletes and their details (such as age, height, weight, and so on). You are required to sort the data based on Kth the attribute and print the final resulting table. Follow the example given below for a better understanding.


Note that is indexed from 0 to M-1, where M is the number of attributes.

Note: If two attributes are the same for different rows, for example, if two athletes are of the same age, print the row that appeared first in the input.

Input Format

The first line contains N and M separated by a space.
The next N lines each contain M elements.
The last line contains K .

Constraints

1<=N, M<=1000

0<=K<M

Each element <= 1000

Output Format

Print the lines of the sorted table. Each line should contain the space separated elements. Check the sample below for clarity.

Sample Input 0:

5 3

10 2 5

7 1 0

9 9 9

1 23 12

6 5 9

1

Sample Output 0

7 1 0

10 2 5

6 5 9

9 9 9

1 23 12

Explanation 0

The details are sorted based on the second attribute since K is zero-indexed.

Algorithm :

1. Start.

2. Get the number of athletes(n) and m as input from the user.

3. Create a list(l).

4. loop from 0 to n

    get the details of the athlete and store them in sublist of the list(l).

5. Get the key from the user.

6. sort the list, l based on the key.

7. print the elements of the list.

8. End.


Code :

#Get number of athlete and m from user

n,m=map(int,input().split())

l=[]

#formatting the input as sublist

for i in range(n):

x=list(map(int,input().split()))

l+=[x]

#Getting the key from user

k=int(input())

#sort the list l based on the given key

l.sort(key=lambda el: el[k])

#print the list

for i in range(n):

for j in range(m):

print(l[i][j],end=" ")

print()

Explanation of the python functions used :

  • map()- used to apply the given function to each item of a given iterable(list,
        tuple).
  • split()- splits the input based on the given delimiter and returns a list.
        It defaultly takes space as the delimiter.
  • sort()- sorts the list.
  • lambda- used to describe a one line function.
  • key- passed as an argument to sort function, based on which the array is
        sorted.



Comments

Popular posts from this blog

Finding the percentage in python - HackerRank solution

HackerRank challenges with solutions (Rearrangement, Formula, Word sorting, Numbers, Sentence)

What's your name, Tuple - HackerRank solution in python