はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC280のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。
A - Pawn on a Grid
a-280.rb
h, w = gets.split.map(&:to_i)
s = Array.new(h){ gets.chomp }.join
puts s.count("#")
解説
countメソッドを使って#
の数を数え上げています。
B - Inverse Prefix Sum
b-280.rb
n = gets.to_i
s = gets.split.map(&:to_i)
a = [s[0]]
(1..n - 1).each do |i|
a << s[i] - s[i - 1]
end
puts a.join(" ")
<追記>
コメントでいただいた別解になります。
別解
n = gets.to_i
ss = gets.split.map(&:to_i)
result = ss.each_cons(2).map { _2 - _1 }
puts [ss[0]].concat(result).join(" ")
解説
例えば、S3=A1+A2+A3=S2+A3であることから、A3=S3-S2となります。この関係式を順に適用していき数列Aを求めていきます。
C - Extra Character
c-280.rb
s = gets.chomp
t = gets.chomp
n = s.size
for i in 0..n - 1
if s[i] != t[i]
puts i + 1
exit
end
end
puts n + 1
解説
順に調べていき一致しないところがあればそのindexを出力して終了、最後まで行ければ文字は末尾に挿入されたということなのでs.size+1を出力します。