[1439]反転


🔗 質問リンク


https://www.acmicpc.net/problem/1439

問題の説明


マルチシスは、0と1のみからなる文字列Sを有する.多順はこの文字列Sのすべての数字を同じにしたいと思っています.マルチシスはSの連続する1つ以上の数字をつかんで、それからすべてひっくり返すことができます.反転は1を0に、0を1にすることを意味します.
例えば、S=0001100の場合、
1. 전체를 뒤집으면 1110011이 된다.

2. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 
   2번 만에 모두 같은 숫자로 만들 수 있다.
   
3. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면
   한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다.
文字列Sが指定されている場合は、マルチシスが実行しなければならない最小操作回数を出力します.

⚠▼制限

  • の第1行には文字列Sが与えられる.Sの長さは100万未満である.
  • 💡 プール(言語:Python)


    簡単な問題ですが、どのように実施するかは考えていません.
    前の数字と後の数字を比較し、数字が変わるたびにカウントし、(変化の回数+1)を2で割るルールがあります.
    import sys
    inp = sys.stdin.readline
    
    ex = inp().strip()
    count = 0
    
    for i in range(1, len(ex)):
      if ex[i-1] != ex[i]:
        count += 1
    
    print( (count + 1) // 2 )