[BOJ] Q1439 문자열 뒤집기

Question

Language: Python

Difficulty: Silver 5

0,1로 이루어진 문자열 S에 대해 문자 뒤집기를 진행, 한번에 연속된 같은 숫자를 한번에 뒤집는 것이 가능하다.

00011000 -> 이면 1을 모두 뒤집어 00000000 로 만들 수 있다는 의미이다.

여기서 0이 아니라 왜 1을 뒤집을까? 0을 이루는 집단이 2개, 1을 이루는 집단이 1개다 따라서 집단 단위로 문자 뒤집기가 가능한 이 문제에서는 집단 수 가 적은 문자를 고르는 것이 효율적이다.

Solution

def solution():
  count0,count1=0,0
  if input_data[0]=='0':
    count0+=1
  else:
    count1+=1

  for i in range(1,len(input_data)):
    previous_data,current_data=input_data[i-1],input_data[i]
    if previous_data!=current_data:
      if current_data=='1':
        count1+=1
      else:
        count0+=1

  print(min(count1,count0))
  
if __name__ == "__main__":
  input_data=list(input())

댓글남기기