알고리즘 문제풀이/Greedy

백준 1439 파이썬(그리디)

Aytekin 2021. 12. 15. 11:29

중간의 뒤집는 숫자의 개수가 얼마나 많던지 상관없이 숫자가 얼마나 바뀌는지만 잘 계산하면 풀리는 문제다.

 

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