BOJ 1439反転


https://www.acmicpc.net/problem/1439
2秒、128 MBメモリ
input :
  • 文字列Sが与えられる.Sの長さは100万未満である.
  • output :
    出力
  • 多順で行うべき最小行動回数
  • 条件:
  • 多順でできることは、S上で連続した1つ以上の数字をつかんで、すべてひっくり返すことです.反転は1が0になり、0が1
  • になることを意味する.
    マルチシスが行うべき動作は、文字列全体に影響を与えません.最終的には0個の数または1個の数をひっくり返す
    そのため、どちらの場合も、比較的小さな価格でひっくり返す場合が正解です.
    import sys
    
    data = sys.stdin.readline().strip()
    zero, one = 0, 0
    
    prev = data[0]
    if prev == '1':
        one += 1
    else:
        zero += 1
    
    for i in range(1, len(data)):
        if data[i] != prev:
            if data[i] == '1':
                one += 1
            else:
                zero += 1
        prev = data[i]
    
    print(min(zero, one))