뒤집기

면접 대비

시간 제한2초메모리 제한128 MB

요약
이진 문자열에서 연속된 구간을 뒤집는 연산을 반복해 모든 문자를 같게 만드는 최소 횟수를 구하는 문제입니다.
난이도

보통10점 중 4점

유형
문자열, 그리디, 수학
정답자
아직 제출이 없습니다

문제

0과 1로만 이루어진 문자열 S가 주어진다. 한 번의 행동으로 S에서 연속된 하나 이상의 문자를 선택해 모두 반대로 바꿀 수 있다. 즉, 0은 1로, 1은 0으로 바뀐다.

목표는 문자열의 모든 문자가 같아지도록 만드는 것이다.

예를 들어 S = 0001100이라고 하자.

  1. 전체를 뒤집으면 1110011이 된다.
  2. 그다음 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어, 두 번의 행동으로 모든 문자를 같게 만들 수 있다.

하지만 처음부터 4번째 문자부터 5번째 문자까지만 뒤집으면 0000000이 되므로, 한 번의 행동이면 충분하다.

문자열 S가 주어졌을 때 필요한 최소 행동 횟수를 구하라.

입력

첫째 줄에 0과 1로만 이루어진 문자열 S가 주어진다. S의 길이는 1,000,000보다 작다.

출력

첫째 줄에 모든 문자를 같게 만들기 위해 필요한 최소 행동 횟수를 출력한다.

예제5

  1. 예제 1

    입력
    0001100
    
    예상 출력
    1
  2. 예제 2

    입력
    11111
    
    예상 출력
    0
    
  3. 예제 3

    입력
    00000001
    
    예상 출력
    1
    
  4. 예제 4

    입력
    11001100110011000001
    
    예상 출력
    4
    
  5. 예제 5

    입력
    11101101
    
    예상 출력
    2