[このカテゴリ]ソート-成績の低い順に学生を出力します.



🔔 質問する


学生情報はN個あります.学生情報は学生の名前と学生の成績に分けられる.各学生の名前と成績情報を与える場合は、成績の低い順に学生の名前を印刷するプログラムを作成してください.

入力

  • 第1行目は生徒数Nを入力する.(1<=N<=100,000)
  • の2行目から、N+1行において、学生名を表す文字列Aと、学生成績を表す整数Bとがスペースで区切られて入力される.文字列Aの長さと生徒の成績は100以下の自然数である.
  • しゅつりょく

  • すべての学生の名前を成績の低い順に印刷します.成績が同じ学生順で自由に印刷できます.
  • 🎯 解答方法


    この問題では,学生の情報は最大10,000個まで入力可能であるため,最悪の場合,保証O(Nlogn)のアルゴリズムを用いてもよいし,保証O(N)の係数ソートを用いてもよい.それだけでなく、入力したデータは学生の名前と点数ですが、出力するときは学生の名前だけを出力すればよいので、学生情報(点数、名前)を組み合わせて点数によってソートしなければなりません.

    💻 Pythonコード

    n = int(input())
    
    array = []
    for _ in range(n):
        data = input().split()
        array.append((data[0], int(data[1])))
    
    # 키(Key)를 이용하여 점수를 기준으로 정렬
    array.sort(key=lambda x : x[1])
    for i in array:
        print(i[0], end=' ')