728x90
반응형

Summary

이 문제는 리스트를 응용해서 풀 수 있게 만들어진 문제로 보인다.
N 명의 학생의 이름과 점수를 순서대로 입력받아 처리해주어야 한다.
예제를 보면 알 수 있듯이 이름 - 점수 - 이름 - 점수 순으로 입력된다.
문제에서 원하는 결과는 두 번째로 낮은 점수를 가진 학생을 이름순으로 정렬해서 출력하는 것이다.

 

그래서 단순하게 이름과 점수를 하나의 리스트 [이름, 점수] 로 저장했고 등급을 하나 더 저장했다.
이렇게 한 이유는 일단 점수를 저장해서 두 번째로 낮은 점수를 가져오고 가져온 점수로 검색해서 이름을 출력해야겠다고 생각했다.

stds = []
scores = []

for _ in range(int(input())):
    name = input()
    score = float(input())

    stds.append([name, score])
    scores.append(score)

 

다음으로 점수의 중복을 제거하고 정렬해서 두 번째로 낮은 점수를 가져왔다.

unique_scores = list(set(scores))
sorted_usc = sorted(unique_scores)
    
sec_lowest_grade = sorted_usc[1]

 

그리고나서 해당 점수를 가지고 이름을 찾았다.
아, 그리고 이름을 출력하기 전 오름차순으로 정렬해서 출력해야해서 미리 정렬을 해주었다.
그렇게 두 번째로 낮은 점수를 가진 학생의 이름을 출력할 수 있었다.

sorted_stds = sorted(stds)

for std in sorted_stds:
    if std[1] == sec_lowest_grade:
        print(std[0])

 

 

Problem

 

Submit Code

if __name__ == '__main__':
    
    stds = []
    scores = []
    
    for _ in range(int(input())):
        name = input()
        score = float(input())
        
        stds.append([name, score])
        scores.append(score)
    
    unique_scores = list(set(scores))
    sorted_usc = sorted(unique_scores)
    
    sec_lowest_grade = sorted_usc[1]
    
    sorted_stds = sorted(stds)
    
    for std in sorted_stds:
        if std[1] == sec_lowest_grade:
            print(std[0])

 

Result

728x90
반응형
복사했습니다!