B - Ticket Gate Log Editorial
by
sounansya
以下の条件を満たす最小の正整数 \(c\) を \(c_0\) とします。
- \(T\) を
io
を \(c\) 回繰り返した文字列とすると、 \(S\) は \(T\) の(連続とは限らない)部分列となっている。 … \((\star)\)
すると、求める答えは \(S\) の長さを \(N\) として \(2c_0-N\) となることが分かります。これは、
- \(S\) は \(T\) の(連続とは限らない)部分列となっていれば何回かの操作で \(S\) を \(T\) にすることができる。
- \(T\) は問題文中の条件を満たす。
ことから従います。
よって、 \(c\) を \(1\) から昇順に試していき、 \((\star)\) の条件を満たすかを順番に確かめていけば良いです。
def is_subsequence(s, t):
it = iter(t)
return all(c in it for c in s)
s = input()
c = 1
while True:
t = "io" * c
if is_subsequence(s, t):
print(2 * c - len(s))
break
c += 1
posted:
last update: