문자열을 순회하며, 문자열이 바뀔 때 마다, 1이면 one에 1을 더하고, 0이면 zero에 1을 더했다
경우의 수
one이 0이고, zero가 0일 때에, 숫자를 뒤집지 않아도 되서 0을 출력
one만 0이면 zero 값인 1을 출력
zero만 0이면, one 값인 1을 출력
zero와 one이 0이 아니면, 둘 중에 작은 것을 출력
문제풀이 (두번째)
000001110000110110 은 0101010과 같다
즉 문자열을 순회하며, 숫자가 바뀔때마다 count에 1씩 더해주면 된다
그리고 count + 1을 한 것을 2로 나누어, 몫을 출력하면 답이 된다
코드
첫 번째 풀이
numbers = input()
zero = 0
one = 0
if len(numbers) > 1:
for i in range(1, len(numbers)):
if numbers[i] != numbers[i-1]:
if numbers[i-1] == '0':
zero += 1
else:
one += 1
if zero == 0 and one == 0:
print(0)
elif zero == 0:
print(one)
elif one == 0:
print(zero)
else:
print(min(one,zero))
두 번째 풀이
numbers = input()
count = 0
for i in range(len(numbers) - 1):
if numbers[i] != numbers[i+1]:
count += 1
print((count + 1) // 2)