[이코테] Q03 그리디_문자열 뒤집기(8.9)

EunBi Na·2022년 8월 9일
0

문제설명

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만드려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어, S = 0001100일 때는 다음과 같다.

전체를 뒤집으면 1110011이 된다.
4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 두 번 만에 모두 같은 숫자로 만들 수 있다.
하지만 처음부터 4번째, 5번째 문자열 00을 11로 뒤집으면 한 번만에 모두 같은 숫자로 만들 수 있다.

문자열 S가 주어질 때, 다솜이가 해야 하는 행동의 최소 횟수를 출력해라

입력조건

첫째 줄에 0과 1로만 이루어진 문자열 S가 주어진다. S의 길이는 100만 보다 작다.

출력조건

첫째 줄에 다솜이가 해야 하는 행동의 최소 횟수를 출력한다.

문제풀이

data = input()
count0 = 0 #전부 0으로 바꾸기
count1 = 0 #전부 1로 바꾸기

#첫번째 원소에 대해서 처리
#'1'을 '0'으로 바꾸기 위한 알고리즘
if data[0] == '1' 
	count0 += 1 #전부 0으로 바꾸기
else:
	count1 += 1 #전부 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))
profile
This is a velog that freely records the process I learn.

0개의 댓글