ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

第4回 ドワンゴからの挑戦状 予選 B - 2525文字列分解

問題
提出コード

解法

シミュレーションをしていきます。
現在の文字列をSとします。その中で作成できる最長の2525文字列をSから取り除き、残った中でまた文字列を取り除き…と繰り返していきます。
最終的に、Sが空になれば完了です。
Sの文字に対し、残すか取り除くかを決定していきます。
次に取り除くべき文字をtとします(初期はt='2'です)。
Sの先頭から順番に見ていき、tと一致するものがあったらそれが取り除く文字です。tと一致しなければ残す文字列です。
tと一致する文字列があったら、tを逆にします(2→5、5→2)。そしてこの操作を繰り返します。 最後まで操作をし終えた時、t='5'であった場合、取り除いた文字列は2525文字列ではない(最後に2がきているはずです)ので、残す文字列に'2'を1つ移動させてあげます。
そして、残った文字列が'2'もしくは'5'だけになった場合、そしてtと一致する文字列が存在せず一度も操作が行われなかった場合は失敗となり、-1を出力します。
Sが空になった場合は、Sの先頭から最後まで見る操作を行った回数を出力すると答えになります。