結果
問題 | No.571 3人兄弟(その2) |
ユーザー |
![]() |
提出日時 | 2018-11-25 22:49:23 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 87 ms / 2,000 ms |
コード長 | 2,729 bytes |
コンパイル時間 | 496 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 12,288 KB |
最終ジャッジ日時 | 2024-12-25 22:10:39 |
合計ジャッジ時間 | 2,475 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 12 |
コンパイルメッセージ
Syntax OK
ソースコード
a = gets.chomp.split(" ")b = gets.chomp.split(" ")c = gets.chomp.split(" ")# そしてmapメソッドを使って配列の文字列を数値にしますaa = a.map(&:to_i)bb = b.map(&:to_i)cc = c.map(&:to_i)# aa[170, 60]# bb[180, 70]# cc[160, 50]# ↑それぞれ今この様な配列になっているから# これをhashにしますh = { "A" => aa[0], "B" => bb[0], "C" => cc[0]}w = { "A" => aa[1], "B" => bb[1], "C" => cc[1]}#こんな感じになる# h = { "A" => 170, "B" => 180, "C" => 160}# w = { "A" => 60, "B" => 70, "C" => 50}# 次にsortメソッドを使ってhashの値を高いもん順にならべかえる# 身長の高い順hh = h.sort { |(key1, val1),(key2, val2)| val2 <=> val1 }# こんな感じ[["B", 180], ["A", 170], ["C", 160]]# 次は体重の軽い順にsortするww = w.sort { |(key1, val1),(key2, val2)| val1 <=> val2 }# こんな感じ[["C", 50], ["A", 60], ["B", 70]]# 体重よりも身長の方が優れている優先度が高いから# 身長が高い人に点数を多く与えてあげる# eachメソッドを使って1位の人に30点をあげる# そしてそこから身長が低くなるにつれて点数を# 10点ずつ低くする計算式を作る#lankにはまず1位の人に30点を上げたいから30を代入して上げますlank = 30#previousには前回の人の値が入る#けど最初の人は前回の人がいないから初期値として#0を入れといて上げますprevious = 0score = {"A" => 0, "B" => 0, "C" => 0}hh.each { |key, val|if previous > val then# if文がfalseになる様に0を入れておくlank -= 10# 前回より小さいならlank(点数)を下げる# 最初は30点入っているendprevious = valscore[key] = lank}# 150# 140# 150# {"A"=>30, "B"=>20, "C"=>30}lank2 = 4#previousには前回の人の値が入る#けど最初の人は前回の人がいないから初期値として#0を入れといて上げますprevious2 = 0score2 = {"A" => 0, "B" => 0, "C" => 0}ww.each { |key, val|if previous2 < val then# if文がfalseになる様に0を入れておくlank2 -= 1# 前回より小さいならlank(点数)を下げる# 最初は30点入っているendprevious2 = valscore2[key] = lank2}# h1 = {a:1, b:2}# h2 = {b:3, c:4}# p h1.merge(h2){|key, v0, v1|# v0 + v1 # キーが重複していた場合は2つの値を加算する# } #=> {:a=>1, :b=>5, :c=>4}score3 = score.merge(score2){|key, v0, v1|v0 + v1}score4 = score3.sort { |(key1, val1),(key2, val2)| val2 <=> val1 }# [["C", 31], ["A", 22], ["B", 13]]puts score4[0][0]puts score4[1][0]puts score4[2][0]