【AtCoder】ABC311解説(Python)

トヨタ自動車プログラミングコンテスト2023#4(AtCoder Beginner Contest 311)の解説記事です。

目次

ABC311 A – First ABC

問題

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

問題の要約

ABC からなる文字列 \(S\) が与えられます。ABCが全て1 回以上含まれるのは左から何文字目まで見たときに満たすか、最小値を求めよ。

制約

・\(3 \le N \le 100\)
・\(S\) はABC からなる長さ \(N\) の文字列
・\(S\) はABCをすべて含む

入力

\(N\)
\(S\)

出力

答えを出力せよ。

解説

左から順番に見て、ABCがすべて出現したときの文字数を出力する。

解説

まず入力 \(N\) をint型、\(S\) を文字列として受け取ります。

N=int(input())
S=input()

ABCが出現したかどうかを表すフラグを準備します。

flag_a=False
flag_b=False
flag_c=False

左の文字から順にfor文で見て、ABCであれば、それぞれが出現したかを表すフラグをTrueにします。

for i in range(N):
  if S[i]=='A':
    flag_a=True
  if S[i]=='B':
    flag_b=True
  if S[i]=='C':
    flag_c=True

ABCすべての文字が出現していたら、答えを出力します。
for文は0-indexedのため、答えはプラス1をします。

  if flag_a and flag_b and flag_c:
    print(i+1)
    exit()

解答

N=int(input())
S=input()
flag_a=False
flag_b=False
flag_c=False

for i in range(N):
  if S[i]=='A':
    flag_a=True
  if S[i]=='B':
    flag_b=True
  if S[i]=='C':
    flag_c=True
  if flag_a and flag_b and flag_c:
    print(i+1)
    exit()
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次