AtCoder Beginner Contest 166 提出コード(Ruby)

ABC 5回目の参加

5月3日に開催されたAtCoder Beginner Contest 166に参加しました。言語はRubyです。

前日に引き続き、AC(正解)はA・B問題だけでした。この前Cまでできたのはまぐれだった模様。

各問題の制約や入力・出力例はリンク先(AtCoderのサイト)をご覧ください。

A - A?C

問題文
AtCoder 社は、毎週土曜日にコンテストを開催しています。
コンテストには ABC と ARC の 2 つの種類があり、毎週どちらか一方が開催されます。
ABC が開催された次の週には ARC が開催され、ARC が行われた次の週には ABC が開催されます。
先週開催されたコンテストを表す文字列 S が与えられるので、今週開催されるコンテストを表す文字列を出力してください。

入力
入力は以下の形式で標準入力から与えられる。
S

A - A?C

提出したコード

s = gets.chomp
puts s == "ARC" ? "ABC" : "ARC"

結果:AC(正解) 実行時間:58 ms

B - Trick or Treat

問題文
ある街に、N 人のすぬけ君(すぬけ君 1 、すぬけ君 2 、 ...、 すぬけ君 N )が住んでいます。
この街には、 K 種類のお菓子(お菓子 1 、 お菓子 2 、....、お菓子 K )が売られています。お菓子 i を持っているのは、すぬけ君 Ai,1,Ai,2,⋯,Ai,di の計di 人です。
高橋君は今からこの街を回り、お菓子を 1 つも持っていないすぬけ君にいたずらをします。このとき、何人のすぬけ君がいたずらを受けるでしょうか。

入力
入力は以下の形式で標準入力から与えられる。
N K
d1
A1,1 ... A1,d1
:
dK
AK,1 ... AK,dK

B - Trick or Treat

提出したコード

n, k = gets.split.map(&:to_i)
ary = Array.new
(1..k).each.with_index(1) do |x, i|
  d = gets.to_i
  line = gets.split.map(&:to_i)
  ary = ary.push(*line)
end
puts n - ary.uniq.size

結果:AC(正解) 実行時間:54 ms

感想

同じように感じた人が結構いたみたいで安心しました。笑

A問題は簡単。B問題は問題文の意味を読み解くのに時間がかかりました。

C問題までできそうな気もして最後まで粘りましたがダメでした。

レートは12上がって63になりました。