백준(Python) 풀이/그리디 알고리즘

백준(Python) 1439번 뒤집기 풀이

개발윗미 2021. 12. 13. 14:00

Python으로 구현한 1439번 뒤집기 문제 풀이입니다.

 

https://www.acmicpc.net/problem/1439

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net


s = input()

change_0 = 0
change_1 = 0

if s[0] == '0' :
  change_1 += 1
else :
  change_0 += 1

for i in range(len(s) - 1) :
  if s[i] != s[i+1] :
    if s[i+1] == '0' :
      change_1 += 1
    else :
      change_0 += 1

print(min(change_0, change_1))

 

1. 입력받은 문자열 s의 첫 번째 원소에 대하여 그 값이 0이라면 change_1을 1 증가시키고 그렇지 않다면 change_0을 1 증가시킨다.

 

2. 반복문을 통해 두 번째 원소부터 모든 원소를 확인하는데, 현재의 값과 그 다음 값이 다를 경우 다시 조건문을 통해

 

   다음 수가 1일 경우 0으로 바꿔준다 생각하여 change_0을 1 증가시킨다. 반대로 다음 수가 0일 경우 1로 바꿔준다
   

   생각하여 change_1을 1 증가시킨다. 이와 같은 작업을 반복하고 최종적으로 change_0과 change_1 중 더 작은 값을 출력한다.