'How to find second runner up score?

n = int(input())
arr = map(int, input().split())
setA = set(arr)

for x in setA:
    x.sorted()
    print(x)

Here is the error that I am facing

5
9 8 7 4
Traceback (most recent call last):

  File "C:\Users\jnnim\OneDrive\Desktop\hacker rank\practice\untitled1.py", line 6, in <module>
    x.sorted()

AttributeError: 'int' object has no attribute 'sorted'

Requirements for the program

You are given n scores. Store them in a list and find the score of the runner-up.

The first line contains n elements. The second line contains an array of integers each separated by a space.

In this program for loop, I have tried that within setA, because we have to sort setA.

I had made the array in set because it does not keeps duplicate element.

  1. Finally when I have to find out the runner up score then I will call [-1] index and make it print as runner up score.

  2. If you need to know more about question please comment, I will tell you anything you need.

  3. Please help me solve this error in this program only within these lines. Don't give a full solution



Solution 1:[1]

This code will work:

n = int(input())
arr = map(int, input().split())
arrset = set(arr)
runnerup = 0
for index, val in enumerate(sorted(arrset), start=1):
    if index == len(arrset) - 1:
        runnerup = val
print(runnerup)

Solution 2:[2]

n = int(input())
arr = (int, input().split())


arrlist = [] 

for t in arr:  
    arrlist.append(t)     
num=arrlist[1]

test_list = [int(i) for i in num]
test_sorted= (sorted(test_list, reverse=True))
List = []
for i in test_sorted:
    if i != max(test_sorted):
        List.append(i)
        
print(max(List))

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ankit
Solution 2 Anitha Madhusudhan