2018-12-22
AtCoder Beginner Contest 109 B
[atcoder.jp](https://atcoder.jp/contests/abc109/tasks/abc109_b)結果
一発 AC
学んだこと
- %w(hoge)はカッコ内を展開する。
- string[x,x]とか文字列操作に慣れよう
- 三項演算子に慣れよう
- break はループを 1 つ抜ける、return は実行中の関数から抜ける
- なるほど!重複がないということは array == array.uniq
- しりとり失敗と分かった時点で処理を中断する(最初に書いたコード)→ 〇処理量が少なくて済む、× ループ文を書く必要がありコードが長くなる
- とにかく全体を一気に計算する(修正したコード)→ 〇コード量が少なくて済む、×2 単語目でしりとり失敗と分かっても続きの無駄な処理をしてしまう
- 一長一短だなあ
最初に書いたコード
n = gets.to_i
flag = true
words = %W(#{gets.chomp})
(n-1).times do |_|
w = gets.chomp
if words.include?(w) || words.last[-1] != w[0,1]
flag = false
break
else
words << w
end
end
puts flag ? 'Yes' : 'No'
修正したコード
w = []
gets.to_i.times{w << gets.chomp}
puts w==w.uniq && (0..w.size-2).all?{|i|w[i][-1]==w[i+1][0]} ? :Yes : :No