【AtCoder】ABC301解説(Python)

パナソニックグループプログラミングコンテスト2023(AtCoder Beginner Contest 301)の解説記事です。

ABC301 A – Overall Winner

問題

問題文の要約は以下の通りです。

問題の要約

TAからなる長さN の文字列 S が与えられます。TA のどちらが多いか答えよ。
ただし同数の場合は文字列の先頭から見て先にその数に達している方を出力せよ。

入力

N
S

出力

T または A を出力せよ。

解法

TA のどちらが多いか判定する。
同数の場合は最後の文字ではない方が答えになる。

解説

まず、TAがそれぞれ何文字含まれているかを求めます。

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')

先にATが同数か判定し、print内でTAのどちらを出力するか判定することもできます。

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')
1 2
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!