はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC306のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。
A - Echo
a-293.rb
gets
gets.chomp.chars{ print _1 * 2}
B - Base 2
b-293.rb
a = gets.split.map(&:to_i)
puts a.map.each_with_index{ _1 * (2 ** _2) }.sum
解説
Aの各要素をa[i] * 2 ^ i
でマッピングした後の要素の総和を出力すればOKです。
C - Centers
c-293.rb
n = gets.to_i
a = gets.split.map(&:to_i)
hash = Hash.new(0)
ans = []
a.each do
hash[_1] += 1
if hash[_1] == 2
ans << _1
end
break if ans.size == n
end
puts ans.join(" ")
解説
連想配列hashを用意しておき、順に要素に対応する値を更新しておきます。そして、値が2となった要素(数字)をans配列に格納していきans配列の大きさがnとなったらループから抜けます。最後に、ans配列を空白区切りで出力することで答えが求まります。