망나니 AWOS의 일상
article thumbnail

문제 풀이

문자열 S를 입력받아서 모든 문자를 1로 만들 때 최소한의 뒤집기 횟수를 출력해야 한다.

 

예제 입력 4를 보면 

11001100110011000001 

인데 연속된 0만 보자면 00, 00, 00, 00000 총 4개가 있고

연속된 1만 보자면 11, 11, 11, 11, 1 총 5개가 있는 것을 볼 수 있다.

 

여기서 생각한 방법은 split함수를 쓰는 것이었다.

문자열 S를 입력받고 해당 문자열을 0이나 1을 구분자로 두면 쉽게 풀 수 있을 것 같았다.

s1 = s.split('0')
s2 = s.split('1')

위와 같이 각각 0과 1로 구분하였을 때 결과이다.

배열에 빈 문자열이 있지만 값이 있을 때만 카운트하면 된다.

 

s1은 연속된 0의 개수의 배열이 될 것이고 s2는 연속된 1의 개수의 배열이 될 것이다.

해당 s1과 s2를 비교해 더 작은 값을 출력하면 된다.

 

완성된 코드!!😊👍

def func(s):
    count =0
    for val in s:
        if val:
            count += 1
    return count


s1 = input()
s2 = s1.split('0')
s3 = s1.split('1')
print(min(func(s2), func(s3)))
profile

망나니 AWOS의 일상

@AWOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!