【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"