[ 이코테 ] 문자열 뒤집기 - 파이썬(Python)

싱가·2023년 3월 3일
0

문제

  • 0과 1로만 이루어진 문자열 s
  • s의 모든 숫자를 전부 같게 만들고자 한다.
  • 1을 0으로, 0을 1로 뒤집는 과정 존재

입력 예시

s = '0001100'

출력 예시

1

예시 풀이

  1. 모두 0으로 만드는 경우

    • '0001100' -> '0000000'
    • 연속된 1을 1번 뒤집기
  2. 모두 1로 만드는 경우

    • '0001100' -> '1111111'
    • 기존 s의 연속된 앞의 '000'을 1번 뒤집기
    • 기존 s의 연속된 뒤의 '00'을 1번 뒤집기
    • 총 2번의 뒤집기

아이디어

  • 전부 0으로 바꾸는 경우와 전부 1로 바꾸는 경우 중에서 더 적은 횟수를 가지는 경우 계산

코드

s = '0001100'

count0 = 0
count1 = 0

# 첫 번째 원소
if s[0] == '1':
    count0 += 1
    
else:
    count1 += 1
    
for i in range(len(s) - 1):
    if s[i] != s[i + 1]:
        if s[i + 1] == '1':
            count0 += 1
        
        else:
            count1 += 1
            
print(min(count0, count1))
  1. 첫 번째 원소에 대하여 처리
  2. 서로 같지 않을 경우
  3. 다음 숫자가 1일 때 0으로 변경되기에 count0에 +1
  4. 다음 숫자가 0일 때 1로 변경되기에 count1에 1

0개의 댓글