【AtCoder:4回目】M-SOLUTIONS プロコンオープンの振り返り(Ruby)
【目次】
【本題】
振り返り
今回は 6/1(土)に開催されたM-SOLUTIONS プロコンオープンの振り返りを行います。
M-SOLUTIONS Programming Contest - AtCoder
今回も2問しか回答できませんでした・・・
3問目は期待値を求めろという内容で、数学が完全に忘却の彼方の私にはハードルが高かったです・・・
A - Sum of Interior Angles
問題文 3 以上の整数 N が与えられます。 正 N 角形の内角の和を求めてください。
ただし、度数法を用いて、単位は出力しないでください。
多角形の内角の和は「 180 * (n-2)」で求められるので、それをそのまま当てはめれば良いと考えました。
n = gets.to_i puts 180 * (n-2)
B - Sumo
問題文 高橋君は相撲の大会に参加しています。 大会は 15 日間行われ、高橋君は 1 日 1 番の取組を行います。 また、高橋君は 8 番以上勝つと次の大会にも参加できます。
k 日目までの取組が終了しました。 高橋君の取組の結果が o, x からなる長さ k の文字列 S で与えられます。 S の i 文字目が o ならば高橋君が i 日目の取組で勝ったことを、 x ならば負けたことをそれぞれ表します。
高橋君が次の大会にも参加できる可能性があるならば YES を、 そのような可能性がないならば NO を出力してください。
15回中、8回以上勝つと大会へ参加出来るという事は、8回負けると大会への参加の可能性が無くなると言い換えられます。
なので、8回以上負けた場合は「NO」で、それ以外は「YES」になると考えました。
s = gets.split("") lose = 0 s.each do |i| lose +=1 if i == "x" end if lose >= 8 puts "NO" else puts "YES" end
三項演算子を使えば、もっとシンプルになります
puts gets.count("x") >= 8 ? "NO" : "YES"