リアルタイムに解けた問題
A - Jiro
問題文
$A,B,C$の三兄弟がいます。この3人の年齢関係は3つの文字$S_{AB}$,$S_{AC}$,$S_{BC}$によって与えられ、それぞれ以下を意味します。
- $S_{AB}$が < の場合$A$は$B$より年下であり、 > の場合$A$は$B$より年上である。
- $S_{AC}$が < の場合$A$は$C$より年下であり、 > の場合$A$は$C$より年上である。
- $S_{BC}$が < の場合$B$は$C$より年下であり、 > の場合$B$は$C$より年上である。
三兄弟の次男、つまり二番目のに年上の人は誰ですか?
制約
- $S_{AB}$,$S_{AC}$,$S_{BC}$はそれぞれ < または >
- 入力に矛盾は含まれない。つまり、与えられた大小関係を全て満たす年齢関係が必ず存在する入力のみが与えられる。
アルゴリズム
入力内容におうじて、$A,B,C$を1づつ増やしていく。その中で二番目に大きい人の名前を出力。
ソースコード
S_AB, S_AC, S_BC = input().split()
A = 0
B = 0
C = 0
if S_AB == '<':
B += 1
else:
A += 1
if S_AC == '<':
C += 1
else:
A += 1
if S_BC == '<':
C += 1
else:
B += 1
if A == 1:
print('A')
elif B == 1:
print('B')
elif C == 1:
print('C')
B - Taro
問題文
AtCoder王国では、長男に必ず「太郎」という名前を付けます。長男以外には「太郎」という名前は付けません。長男とは、名家で生まれた男の子のうち最も早く生まれた物を指します。
AtCoder王国には$N$戸の家があり、$M$人の赤子が生まれました。また、$M$人の赤子が生まれる前には、$M$人の赤子が生まれる前には、$N$戸のどの家も赤子が生まれたことはありませんでした。
赤子の情報が生まれの時系列順に与えられます。
$i$番目に生まれた赤子は、$A_{i}$番目の家で生まれ、$B_{i}$が M のとき男の子、F のとき女の子です。
$M$人の赤子それぞれについて、付けられた名前が「太郎」か判定してくだい。
制約
- $1 \leq N,M \leq 100$
- $1 \leq A_{i} \leq N$
- $B_{i}$は M または F
- 入力される数値は全て整数
アルゴリズム
各家に一人目の子供がいるかどうかを表すリストを用意し、時系列順に与えられた時系列順の赤子の情報に順番にアクセスし、一人目の子供であるか、なおかつ男の子であるかをチェックしていく。
ソースコード
N, M = map(int, input().split())
A = []
B = []
for i in range(M):
a, b = input().split()
A.append(int(a))
B.append(b)
first_child = []
for i in range(N):
first_child.append(False)
for i in range(M):
if B[i] == 'M':
if first_child[A[i] - 1] == False:
first_child[A[i] - 1] = True
print("Yes")
else:
print('No')
else:
print('No')