昨日、初めてAtCorderのコンテストに挑戦してみた。
pythonも初心者だし、まずはABC!と思ってたのに、初陣はAGCだった。おかげでA問題しか手をつけられず、ACも出せずじまい…。
全部WAなわけではないので、多分改良すれば通りそう。
解説みたいな漸化式とか動的計画法とか考えずにごり押ししてみたから、未来の自分が手直ししてACさせてくれることを信じてこの記事を書いてる。
考え方は、
文字列sを関数bunkatu内でリスト化
s[i]番目がs[i+1]と等しいかどうか。
等しくないときは、ansリストにs[i]を追加
等しいときは、s[i]とs[i+1]を結合してansリストに追加
s末尾だとうまくいかないからそのときはans末尾とs[-1]を結合
最後にlen(ans)を表示
AGC037A.py
def bunkatu(s):
s = list(s)
res = int(len(s))
ans = list(s[0])
for i in range(1,res ):
if(s[i] != "A"):
if(ans[-1] != s[i]):
ans.append(s[i])
s[i] = "A"
else:
if(s[i]==s[-1]):
ans[-1] += s[i]
else:
ans.append(s[i]+s[i+1])
s[i+1] = "A"
else:
continue
return len(ans)
s = input()
print(bunkatu(s))
たぶんどっかで何かが抜けてるんだろうなあ。