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
提出コード
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
提出コード
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?
も知らなかったのでこういう書き方になってました。
実行速度もほぼ変わらないのでどちらでもいいかもしれません。
今夜のコンテストも頑張ります!