data = input()
num = 0
for i in range(len(data) - 2): #끝에서 두번째 i까지만
if data[i] != data[i + 1]: # 연속된 두 수가 다른 경우
num += 1
#연속된 두 수를 비교하는것이 중복되므로, 나누기 2 해주기
if num % 2 == 0: #짝수
result = num // 2
else:
result = (num + 1) // 2
print(result)
: 결국 연속된 묶음의 수가 더 적은 쪽을 세면 된다! 그러기 위해서는 자료를 하나씩 확인하면서, 즉 i와 i+1번째 자료를 비교하면서 서로 다를 경우 카운트 해준다. 그런데 여기서 문제가 발생하는데, i-1과 i를 비교하고, i와 i+1을 각각 비교하면서 중복으로 카운트 된다는 것이다. 중복을 해결하기 위해 짝수인 경우 2로 나누고, 홀수인 경우 1을 더한 후 2로 나눈다. 홀수인 경우 1을 더하는 이유는, 홀수인 즉슨 i-1과 i는 비교했지만 i와 i+1은 비교하지 못한 것이나 다름없기 때문이다.
s = list(input())
before = s[0]
count = 0
for i in s[1:]:
if before != i:
count += 1
before = i
print(s)
print(count//2 + count%2)
v=input().count
print((v('10')+v('01')+1)//2)
count
함수가 이렇게 쓰였던가..?data = input()
count0 = 0 #전부 0으로 바꾸는 경우
count1 = 0 #전부 1로 바꾸는 경우
#첫 번째 원소에 대해서 처리
if data[0] == '1':
count0 += 1
else:
count1 += 1
#두 번째 원소부터 모든 원소를 확인하며
for i in range(len(data) - 1):
if data[i] != data[i + 1]:
#다음 수에서 1로 바뀌는 경우
if data[i + 1] == '1':
count0 += 1
#다음 수에서 0으로 바뀌는 경우
else:
count1 += 1
print(min(count0, count1))
: 전부 0으로 바꾸는 경우와 전부 1로 바꾸는 경우 중에서 더 적은 횟수를 가지는 경우를 계산하는 방식으로, 어쩌면..직관적...?