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 を出力せよ。
提出したコード
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問題ぐらいまで)解けたらもっと楽しいのに。。。と思うからもっと頑張ろう。