はじめに
このシリーズではレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】でまとめられている100問をPythonで解いています。
問題
AtCoder Beginner Contest 122 B - ATCoder
ポイント
この問題は全探索を用いて解くことができます。
文字列Sの1文字目から順番にACGTどれかに該当するかを調べ、該当したら候補としてその文字を保存、
該当しなかったらその時点で候補の文字列の長さと現状の最大値と比べ、大きければ上書きします。
コード
def main():
S = input()
list_ACGT = ['A', 'C', 'G', 'T']
result = '' # 最終的な答えとなる文字列
candidate = '' # 候補の文字列
for i in range(len(S)): # Sの1文字目から探索する
if S[i] in list_ACGT: # ACGTに該当すれば候補に追加
candidate += S[i]
else:
if len(candidate) > len(result): # ACGTに該当しなければ候補とresultの文字列を比較
result = candidate
candidate = ''
if i == len(S) - 1: # iが文字列Sの最後尾に達したときも、最後に候補とresultの文字列を比較
if len(candidate) > len(result):
result = candidate
candidate = ''
print(len(result))
if __name__ == '__main__':
main()