input = "0101010"
def find_count_to_turn_out_to_all_zero_or_all_one(string):
change_to_zero_count = 0
change_to_one_count = 0
for i in range(len(string)-1):
if int(string[i+1]) - int(string[i]) == 1:
change_to_zero_count += 1
elif int(string[i+1]) - int(string[i]) == -1:
change_to_one_count += 1
if int(string[0]) - int(string[-1]) == 1:
change_to_zero_count += 1
elif int(string[0]) - int(string[-1]) == -1:
change_to_one_count += 1
return min(change_to_one_count, change_to_zero_count)
result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)
다음 자리수와 같지 않다는걸 가정한다면 굳이 빼기를 해주지 않아도 되겠다...!
input = "011110"
def find_count_to_turn_out_to_all_zero_or_all_one(string):
count_to_all_zero = 0
count_to_all_one = 0
# 첫째 자리는 이전 자리수가 없으므로 그냥 바꿔준다고 생각하면 된다.
if string[0] == '0':
count_to_all_one += 1
elif string[0] == '1':
count_to_all_zero += 1
for i in range(len(string) - 1):
# 둘째 자리부터는 이전 자리수와 다르다는 가정을 해야만한다...!
if string[i] != string[i + 1]:
if string[i + 1] == '0':
count_to_all_one += 1
if string[i + 1] == '1':
count_to_all_zero += 1
return min(count_to_all_one, count_to_all_zero)
result = find_count_to_turn_out_to_all_zero_or_all_one(input)
print(result)