ABC371 B問題の解説(Python)

はじめに

この記事では、ABC371のB問題を解説していきます。

ABC(AtCoder Beginner Contest)とは、AtCoderが開催している、競技プログラミングコンテストです。

ABC371 B – Taro

問題

問題

AtCoder王国では、長男に必ず「太郎」という名前を付け、長男以外には「太郎」という名前は付けません。

AtCoder王国にはN戸の家があり、M人の赤子が生まれました。

\(i\) 番目に生まれた赤子は、\(A_i\) 番目の家で生まれ、\(B_i\)  が “M” のとき男の子、”F” のとき女の子です。

M人の赤子それぞれについて、付けられた名前が「太郎」か判定する問題です。

制約

  • \(1 \leqq N, M \leqq 100 \)
  • \(1 \leqq A_i \leqq N \)

思考の筋道

「長男=はじめての男の子」です。はじめてかどうかはフラグで管理すればよいでしょう。フラグがTrueのときはすでに長男が生まれていることとし、Falseのときはまだ生まれていないこととします。

N戸の家がありますので、N個のフラグをリストで管理します。

フラグがFalseでかつ赤子が男の子のときに”Yes”を出力し、フラグをTrueに変更。それ以外のときは”No”と出力すればOKですね!

コード

N, M = map(int, input().split())

l = [False] * N

for _ in range(M):
  A, B = input().split()
  if l[int(A) - 1] == False and B == "M":
    l[int(A) - 1] = True
    print("Yes")
  else:
    print("No")

以上、ABC371のB問題の解説でした!

では、またね。

リンク