[Hackerrank] Python - 10 Nested Lists

후유카와·2024년 11월 27일

Hackerrank

목록 보기
50/59

10. Nested Lists

[ 난이도: Easy | 분야: Basic Data Types ]

1. 과제

반의 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보다 작거나 같다.

데이터에는 반드시 한 명이상이 두 번째로 낮은 점수를 가지고 있다.

출력 형식

두 번째로 낮은 성적을 받은 학생의 이름을 출력하라.

만약 여러 명의 학생이 이에 해당한다면, 그들의 이름을 알파벳 순으로 정렬하고 각 줄에 한 명씩 출력하라.

입력 예시0

5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39

출력 예시0

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.

profile
안녕하세요! 저는 전자공학을 전공하며 하드웨어와 소프트웨어 모두를 깊이 있게 공부하고 있는 후유카와입니다. Verilog HDL, C/C++, Java, Python 등 다양한 프로그래밍 언어를 다루고 있으며, 최근에는 알고리즘에 대한 학습에 집중하고 있습니다. 기술적인 내용을 공유하고, 함께 성장할 수 있는 공간이 되기를 바랍니다. 잘못된 내용이나 피드백은 언제나 환영합니다! 함께 소통하며 더 나은 지식을 쌓아가요. 감사합니다!

0개의 댓글