パナソニックグループプログラミングコンテスト2023(AtCoder Beginner Contest 301)の解説記事です。
ABC301 A – Overall Winner
問題
問題文の要約は以下の通りです。
問題の要約
T
と A
からなる長さN の文字列 S が与えられます。T
と A
のどちらが多いか答えよ。
ただし同数の場合は文字列の先頭から見て先にその数に達している方を出力せよ。
入力
N
S
出力
T
または A
を出力せよ。
解法
T
と A
のどちらが多いか判定する。
同数の場合は最後の文字ではない方が答えになる。
解説
まず、T
とA
がそれぞれ何文字含まれているかを求めます。
T = S.count('T')
A = S.count('A')
T
の方がA
より多ければT
を出力し、T
よりA
のほうが多ければA
を出力します。
if T > A:
print('T')
elif T < A:
print('A')
同数だった場合は文字列の先頭から見て先にその数に達している方、すなわち最後の文字ではない方になります。
最後の文字がA
であればT
を出力し、T
であればA
を出力します。
elif S[N-1] == 'A':
print('T')
else:
print('A')
解答
N = int(input())
S = input()
T = S.count('T')
A = S.count('A')
if T > A:
print('T')
elif T < A:
print('A')
elif S[N-1] == 'A':
print('T')
else:
print('A')
先にA
とT
が同数か判定し、print
内でT
とA
のどちらを出力するか判定することもできます。
N = int(input())
S = input()
T = S.count('T')
A = S.count('A')
if T==A:
print('T' if S[N-1]=='A' else'A')
else:
print('T' if T>A else'A')