[パートナー]グリディ、文字列を反転



Q03. 反転文字列


🐣質問する


マルチシスには0と1のみからなる文字列Sがある.多順は、この文字列Sのすべての数字を同じにしたい.多順でできることは、S上で1つ以上の連続した数字をつかんで、すべてひっくり返すことです.反転は、1が0になり、0が1になることを意味します.
文字列Sが与えられると、マルチシスが実行しなければならない最小オペランドを出力します.
バックグラウンドリンク|https://www.acmicpc.net/problem/1439

🐥に答える

  • tempを反転基準とし、基準とは異なる数字が出たら反転します.
  • 合計1回の反転回数を求める.
  • で0の反転回数を求める.
  • 答えは
  • の最高値です.
  • 🐓コード#コード#

    string = input()
    
    temp = string[0] # 뒤집는 기준
    count = [0, 0] # 0으로 뒤집는 횟수, 1로 뒤집는 횟수
    count[int(temp)] += 1 # 첫번째 기준 뒤집고 횟수++
    
    for s in string:
      # 기준 다르면 뒤집기
      if s!=temp:
        temp = s # 뒤집고 기준 바꾸기
        count[int(temp)] += 1 # 뒤집었으니까 횟수 ++
    
    print(min(count)) # 최솟값 출력

    ⭐2022.03.27


    私のコードですが、久しぶりに見たのですぐには理解できませんでした.また、コットの勉強も再開しなければなりません.