문제
입력 조건
- 첫째 줄에 0과 1로만 이루어진 문자열 S가 주어진다. S의 길이는 100만보다 작다.
출력 조건
- 첫째 줄에 다솜이가 해야 하는 행동의 최소 횟수를 출력한다.
Test Case
// 입력 예시 1
0001100
// 출력 예시 1
1
// 입력 예시 2
00000001
// 출력 예시 2
1
// 입력 예시 3
11001100110011000001
// 출력 예시 3
4
접근
- 같은 숫자가 연속되어 반복되면 한 뭉텅이로 생각하고, 숫자가 바뀌는 순간 카운팅을 해야한다.
- 0 → 1로 바뀌는 횟수와 1 → 0으로 바뀌는 횟수를 카운팅하여 두 횟수 중 최솟값을 출력한다.
내 코드
import sys
input = sys.stdin.readline()
s = input.rstrip()
toOne = 0
toZero = 0
for i in range(1, len(s)):
if s[i] != s[i-1] and s[i-1] == '0':
toOne += 1
elif s[i] != s[i-1] and s[i-1] == '1':
toZero += 1
if s[-1] == '0':
toOne += 1
else:
toZero += 1
print(min(toOne, toZero))