중간의 뒤집는 숫자의 개수가 얼마나 많던지 상관없이 숫자가 얼마나 바뀌는지만 잘 계산하면 풀리는 문제다.
0 -> 0번 바뀜 -> 0번 뒤집음
01 -> 1번 바뀜 -> 1번 뒤집음
010 -> 2번 바뀜 -> 1번 뒤집음
0101 -> 3번 바뀜 -> 2번 뒤집음
01010 -> 4번 바뀜 -> 2번 뒤집음
010101 -> 5번 바뀜 -> 3번 뒤집음
0101010 -> 6번 바뀜 -> 3번 뒤집음
이렇게 계산되므로 규칙을 생각해보면
바뀌는 수(count) 에 1을 더한 수를 2로 나눈 나머지가 뒤집는 횟수가 된다.
num = input()
count = 0
for i in range(len(num)-1):
if num[i] != num[i+1]:
count += 1
print((count+1)//2)
728x90
'알고리즘 문제풀이 > Greedy' 카테고리의 다른 글
백준 16953 파이썬(그리디) (0) | 2022.02.05 |
---|---|
백준 1744 파이썬(그리디) (0) | 2021.12.15 |
백준 4796 파이썬 (그리디) (0) | 2021.12.15 |
백준 1715 파이썬 (그리디) (0) | 2021.12.14 |
백준 10610 파이썬(그리디) (0) | 2021.12.13 |