はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC231のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。
A - Water Pressure
a-231.rb
puts gets.to_i.fdiv(100)
B - Election
b-231.rb
n = gets.to_i
hash = Array.new(n){ gets.chomp }.tally
puts hash.key(hash.values.max)
解説
tally
メソッドで同じkey同士をくくった後のvalueが最大となるkeyが答えとなります。(max_by
を使った書き方もできると思います)
C - Counting 2
c-231.rb
n, q = gets.split.map(&:to_i)
a = gets.split.map(&:to_i).sort
q.times do
x = gets.to_i
i = a.bsearch_index{ _1 >= x } || n
puts n - i
end
解説
bsearch
メソッドを使って二分探索することで、それぞれのXに対してXよりも大きい要素数を求めることができます。
※ countメソッドだとTLEしてしまいます