[Sart]Boj 10825:国営数
1567 ワード
[Sart]Boj 10825:国営数
Link: https://www.acmicpc.net/problem/10825
質問する
道現の4つのクラスのN名の学生の名前と国語の英語の数学の点数をあげることができますこの場合、以下の条件で学生の成績をソートするプログラムを作成してください.
入力
1行目は4つのクラスの学生数N(1≦N≦100000)を与えた.2行目からは、各行に1人の学生の名前、国語、英語、数学の点数がスペースで区切られています.分数が1以上、100以下の自然数.名前はアルファベットの大文字と小文字からなる文字列で、長さは10ビットを超えない.
しゅつりょく
問題のソート基準に従ってソートした後、最初の行からN行に各学生の名前を出力します.
I/O例
コード#コード#
import sys
si = sys.stdin.readline
score = [[] for _ in range(N)]
#입력 받아주기(이름, 국어, 영어, 수학)
N = int(si())
for i in range(N):
score[i] = list(si().split())
score[i][1:] = map(int,score[i][1:])
#정렬(Key 값의 순서 중요)
score.sort(key = lambda x:(-x[1],x[2],-x[3],x[0]))
for x in score:
print(x[0])
コードの概要
2-1. 最優先順位は国語の成績です.国語の成績が大きい順から羅列すればよいので、キー値「x[1]」の前にマイナス記号を付けて降順に並べます.
2-2. 国語の成績と同じように、英語、数学、名前順にキー値を設定すればいい.
Screenshot & Output
Reference
この問題について([Sart]Boj 10825:国営数), 我々は、より多くの情報をここで見つけました https://velog.io/@kakasi18/Sort-Boj10825-국영수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol