AtCoder Beginner Contest 046 - D / 047 - C

beta.atcoder.jp

気づけるか。そこが勝負。 解説の通りなんだけれども、得点を最大化する戦略はパーを出すだけ出す。 そして並び順はどうでもよい。 というのも、相手がグーを出しているとき、グーからパーにすると+1ポイント。 相手がパーを出しているとき、グーからパーにしても+1ポイントでどこをパーにしても常に同じ。

ここから得点計算すればよい。

教訓としては差分を考える、ということと、 極端なケースから始めよう、というところかな。

def solve(s):
    return len(s) // 2 - s.count("p")


if __name__ == "__main__":
    print(solve(input()))

beta.atcoder.jp

これも気づけるか。そこが勝負。 以前どこかで二次元の問題をやったときにでてきたもので、 色の境目の数がひっくり返す必要のあるもの。単にそれを数えればよい。

def solve(s):
    return s.count("BW") + s.count("WB")


if __name__ == "__main__":
    print(solve(input()))