[AtCoder]diverta 2019 Programming Contest C-AB Substrings

【問題】https://atcoder.jp/contests/diverta2019/tasks/diverta2019_c

問題キャプチャ

【方針】頭がBでお尻がAの文字は、それだけでペアにするとたくさんABが作れる。

【提出コード】

#input
n = int(input())
both = 0
a_end = 0
b_start = 0

answer = 0
for i in range(n):
    s = str(input())
    answer += s.count("AB")
    if s[0] == "B" and s[-1] == "A":
        both += 1
    elif s[0] == "B":
        b_start += 1
    elif s[-1] == "A":
        a_end += 1
#output
#文字そのものの中にABが何個含まれているかをまず数える
#その次に、Aで終わる、またはBで始まる文字を数える。
#Aで終わり、かつBで始まる文字もあるだろう。
#bothは可能な限り自分で連結する。するとboth-1個のABが作られる。
if both > 1:
    answer += both-1
#その後bothの頭にあればa_endを、お尻にb_startを連結。
if both > 0 and a_end > 0:
    answer += 1
    a_end -= 1
if both > 0 and b_start > 0:
    answer += 1
    b_start -= 1
#a_endとb_startで作れるだけABを作る
answer += min(a_end, b_start)
print(answer)

【提出結果】

Submission #26668291 - diverta 2019 Programming Contest
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

コメント

タイトルとURLをコピーしました