https://www.acmicpc.net/problem/1439
n = list(input())
cnt = 1
temp1 = []
temp2 = []
for i in range(1, len(n)):
if n[i] != n[i-1]:
if n[i] == '0': # 앞 0 현재 1
temp1.append(cnt)
cnt = 1
else:
temp2.append(cnt)
cnt = 1 # 앞 1 현재 0
else:
cnt += 1
if n[-1] == '1':
temp1.append(cnt)
else:
temp2.append(cnt)
print(min(len(temp1), len(temp2)))
0,1이 연속되는 구간의 개수를 구해서 더 작은 값을 출력해주면 된다.
연속되는 구간을 구하는 경우의 수가 3개인데,
1. 현재 값과 이전 값이 같을 때
2. 현재 값 - 0, 이전 값 - 1 인 경우
3. 현재 값 - 1, 이전 값 - 0 인 경우
로 나누어서 풀었다.
(1) 인 경우, cnt 값을 1 더해주었고 (2)와 (3)의 경우 각각의 배열에 연속되어진 0 또는 1의 개수의 값을 추가해주었다.
이렇게 반복문을 해서 풀어주면 마지막값과 (마지막-1)의 값 비교는 할 수 없으므로 따로 해주어 배열에 더해주었다.