CODE FESTIVAL 2017 Final: B - Palindrome-phobia

,

https://beta.atcoder.jp/contests/cf17-final-open/tasks/cf17_final_b

文字種が$4$になるとどうなるのだろう (考えてない)

solution

文字の数を数えた後は$O(1)$。

始めに文字aを使うすると、その後ろにはaは置けない。さらにbを置いてabとすると、この後ろにはc以外を置くことはできない。abcとなれば同様に必ずaを置かなければならない。これを繰り返せば、目標の文字列が構成されるならabcabc...abcabとならねばならない。 よって、入力はそれぞれの文字の数$a, b, c \in \mathbb{N}$が与えられるとしてよく、$\max \{ a, b, c \} \le \min \{ a, b, c \} + 1$が答え。

implementation

#!/usr/bin/env python3
s = input()
a = s.count('a')
b = s.count('b')
c = s.count('c')
result = (max(a, b, c) <= min(a, b, c) + 1)
print(['NO', 'YES'][result])