A - Five Variables(ABC170復習)

6月14日に開催されたAtCoder Beginner Contest 170

A問題の復習。

各問題の制約や入力・出力例はリンク先(AtCoderのサイト)へ。

A - Five Variables

問題文
5 つの変数 x1, x2, x3, x4, x5 があります。
最初、変数 xi には整数 i が代入されていました。
すぬけくんは、これらの変数の中から 1 つを選んで、その変数に 0 を代入する操作を行いました。
すぬけくんがこの操作を行ったあとの 5 つの変数の値が与えられます。
すぬけくんが 0 を代入した変数がどれであったかを答えてください。

入力
入力は以下の形式で標準入力から与えられる。
x1, x2, x3, x4, x5

出力
すぬけくんが 0 を代入した変数が xi であるとき、整数 i を出力せよ。

A - Five Variables

提出したコード

nums = gets.split.map(&:to_i)
puts nums.index(0) + 1

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

まず標準入力値を整数として配列 nums に入れる。

indexメソッドで値が0の要素のインデックス番号を取得し、+ 1する。

Array#find_index (Ruby 2.7.0 リファレンスマニュアル)

他の書き方

eachを使っているコードが多かったので自分でも書いてみた。

nums = gets.split.map(&:to_i)
ans = 1
nums.each do |n|
  if n == 0
    puts ans
    exit
  else
    ans += 1;
  end
end

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

Rubyにはたくさんの便利メソッドがあるからそっちを使ってしまう。

+ 1って書くと他の言語っぽくなる。やっぱりRubyらしいコードを書きたい。

感想

競技プログラミングは、時間制限がある分一生懸命メソッドや方法を調べるから自分にとっては勉強になるしゲームみたいで楽しいし一石二鳥。

もう少し(せめてC問題ぐらいまで)解けたらもっと楽しいのに。。。と思うからもっと頑張ろう。