AtCoder Beginners SelectionにRubyで挑戦 #1

AtCoder初心者がやるべき問題集に挑戦することにしました。

AtCoder Beginners Selection - AtCoder

このコンテストは、「AtCoderに登録したけど何をしていいか分からない・・・!」という人に向けて作られた、初心者向け問題集です。

ということで、早速やってみます。

各問題の制約や入出力例などは引用元リンク(AtCoderのサイト)をご覧ください。

PracticeA - Welcome to AtCoder

問題文
高橋君はデータの加工が行いたいです。
整数 a,b,c と、文字列 s が与えられます。
a+b+c の計算結果と、文字列 s を並べて表示しなさい。

入力
入力は以下の形式で与えられる。
a
b c
s

入力例
1
2 3
test

出力例
6 test

PracticeA - Welcome to AtCoder

提出コード

a = gets.to_i
b, c = gets.split.map(&:to_i)
s = gets.chomp
puts "#{a + b + c} #{s}"

結果:AC(正解) 実行時間:49 ms

Rubyの中では最速の実行時間でした!!多分完璧??

ABC086A - Product

問題文
シカのAtCoDeerくんは二つの正整数 a,b を見つけました。
a と b の積が偶数か奇数か判定してください。

入力
入力は以下の形式で標準入力から与えられる。
a b

出力
積が奇数なら Odd と、 偶数なら Even と出力せよ。

入力例
3 4

出力例
Even

ABC086A - Product

提出コード

a, b = gets.split.map(&:to_i)
puts (a * b).odd? ? "Odd" : "Even"

結果:AC(正解) 実行時間:55 ms

最近覚えたodd?メソッドを使ってみました。odd?は奇数であればtrueを返しますが、偶数のときtrueを返すeven?メソッドもあります。

Integer#odd? (Ruby 2.7.0 リファレンスマニュアル)

Integer#even? (Ruby 2.7.0 リファレンスマニュアル)

以前(多分3月頃?)自分が提出したコードはこんな感じでした。

a, b = gets.chomp.split(" ").map(&:to_i)
c = a * b
if c % 2 == 0
    puts "Even"
else
    puts "Odd"
end

結果:AC(正解) 実行時間:57 ms

1行目のchompは不要でした。(Ruby splitメソッドは引数なしのとき改行削除する - No Solution For Life

このときはodd?even?も知らなかったのでこういう書き方になってました。

実行速度もほぼ変わらないのでどちらでもいいかもしれません。

今夜のコンテストも頑張ります!