[ 난이도: Easy | 분야: Basic Data Types ]
반의 N명 학생들의 각각의 이름과 성적이 주어지고 이를 nested list에 저장한 후 성적이 두 번째로 낮은 학생의 이름을 출력하라.
주의: 성적이 두 번째로 낮은 학생이 여러 명이라면 알파벳 순으로 이름을 정렬한 후 각각 별도의 줄에 이름을 출력하라.
records = [["chi",20.0],["beta",50.0],["alpha",50.0]]
성적을 순서대로 나열하면 [20.0, 50.0]이어서, 두 번째로 낮은 성적은 50.0이다. 이 경우, 해당하는 학생이 두 명이 있고 이를 리스트로 표현하면 다음과 같다: ["beta", "alpha"]
알파벳 순으로 정렬한 다음 출력하면 다음과 같이 출력된다:
alpha
beta
첫 번째 줄은 정수 N을 포함하고 있고 이는 학생들의 수를 의미한다.
2N의 하위줄이 있고 각 학생들은 2줄씩 사용한다.
- 첫 번째 줄은 학생의 이름이다.
- 두 번째 줄은 이 학생의 성적이다.
N은 2보다 크거나 같고 5보다 작거나 같다.
데이터에는 반드시 한 명이상이 두 번째로 낮은 점수를 가지고 있다.
두 번째로 낮은 성적을 받은 학생의 이름을 출력하라.
만약 여러 명의 학생이 이에 해당한다면, 그들의 이름을 알파벳 순으로 정렬하고 각 줄에 한 명씩 출력하라.
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
Berry
Harry
반에는 5명의 학생이 있고 학생의 이름과 성적을 매칭하면 다음과 같다:
python students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]
가장 낮은 성적은 37.2이고 이에 해당하는 학생은 Tina다. 두 번째로 낮은 성적은 37.21이고 이에 해당하는 학생은 Harry와 Berry다.
그렇기에 이 이름을 알파벳 순으로 정렬하고 각 줄에 하나의 이름을 출력한다.
if __name__ == '__main__':
for _ in range(int(input())):
name = input()
score = float(input())
더보기
정답
if __name__ == '__main__':
myStudent = []
studentScore = []
N = 0
for _ in range(int(input())):
name = input()
score = float(input())
myList = [name, score]
myStudent.append(myList)
studentScore.append(score)
N += 1
lowest_Score = min(studentScore)
second_lowest = 100
second_Student = []
for i in range(N):
this_Score = myStudent[i][1]
if(lowest_Score > this_Score):
lowest_Score = this_Score
if(lowest_Score < this_Score < second_lowest):
second_lowest = this_Score
for i in range(N):
if(myStudent[i][1] == second_lowest):
second_Student.append(myStudent[i][0])
second_Student.sort()
for i in second_Student:
print(i)
©️Hackerrank. All Rights Reserved.