問題)
筋トレをしている選手のランキングをつけたい
参加人数はN人
種目は3種目、胸、背筋、脚のみ (chest, back, leg)
それぞれの種目ごとにスコアが与えられる
・胸のスコアが多いほうが上位となる
・が同じ場合、銀メダルの獲得数が多いほうが上位となる
・金メダル、銀メダルの獲得数ともに同じ場合、銅メダルの獲得数が多いほうが上位となる
問題)
筋トレをしている選手のランキングをつけたい
参加人数はN人
種目は3種目、胸、背筋、脚のみ (chest, back, leg)
それぞれの種目ごとにスコアが与えられる
これらのスコアをある条件で査定し、ランキングをつくりたい
・胸のスコアが多いほうが上位となる
・胸のスコアが同じ場合、背筋のスコアが多いほうが上位となる
・胸と背筋ともに同じ場合、脚のスコアが多いほうが上位となる
つまり、胸 > 背筋 > 脚 の順番で重要度が異なる
入力される値
入力は以下のフォーマットで与えられます。
N
g_1 s_1 b_1
g_2 s_2 b_2
...
g_N s_N b_N
期待する出力
メダル獲得数のランキングを以下の形式で出力してください。
rg_1 rs_1 rb_1
rg_2 rs_2 rb_2
...
rg_N rs_N rb_N
・期待する出力は N 行からなります。
・出力の i 行目 (1 ≦ i ≦ N) にランキング第 i 位の選手の胸のスコア、背筋、脚のスコアをそれぞれ表す rg_i, rs_i, rb_i をそれぞれ出力してください。
・第 j 位 (1 ≦ j ≦ N - 1) において 2人の選手が同着であった場合、便宜的に一方の国を第 j 位、もう一方の国を第 j + 1 位と考えます (スコアの獲得数を出力するので区別の必要はありません)。
・出力の N 行目の最後に改行を 1 つ入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 100
・1 ≦ g_i, s_i, b_i ≦ 100 (1 ≦ i ≦ N)
入力例1
6
3 5 9
15 20 35
30 45 72
15 20 31
27 33 59
27 35 77
出力例1
30 45 72
27 35 77
27 33 59
15 20 35
15 20 31
3 5 9
入力例2
10
28 33 59
14 18 28
28 36 38
2 42 73
22 52 81
21 58 71
23 57 82
28 33 59
16 16 19
16 47 92
同着の選手がありますが、以下のように両者を区別せず並び替えることができます。
出力例2
28 36 38
28 33 59
28 33 59
23 57 82
22 52 81
21 58 71
16 47 92
16 16 19
14 18 28
2 42 73
疑問)
与えられたデータの、胸のスコアのみでソートを実施
次に、胸のスコアが同じ選手がいる場合の条件分岐がわからない。
更に、背筋のスコア、脚のスコアと並び変えがわからない。
ヒントだけでも構いませんので、お力添えお願い致します。
コード from operator import itemgetter N = int(input()) data = [ [int(e) for e in input().split()] for _ in range(N) ] data.sort(key=itemgetter(0),reverse=True) print(data) #出力値 [30, 45, 72] [27, 33, 59] [27, 35, 77] [15, 20, 35] [15, 20, 31] [3, 5, 9]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/18 07:22
2018/04/18 07:46
2018/04/18 07:49
2018/04/18 07:52
2018/04/18 08:09 編集
2018/04/18 08:00
2018/04/18 12:59