[백준] 1439 : 뒤집기 - Python

Chooooo·2022년 9월 19일
0

알고리즘/백준

목록 보기
3/182


문제 접근, 생각
이 문제를 처음 풀 때 접근하는 방법부터 틀려서 고민하는데 오래걸렸다. 다른 사람의 코드를 보고 매우 간단해서 이런 생각을 할 수 있게 여러 문제를 풀어봐야겠다.

푸는 방법은 0->1, 1->0으로 전환될 때 count를 증가시킨다. count는 변화했던 횟수를 담고 있고 변화할 때마다 바꿀 필요가 없고 0또는 1로 변화시키면 되므로 나누기 2만 진행하면 됨.

소스코드

import sys

# sys.stdin = open("input.text", "rt")

data = list(map(int, input()))
count = 0

for i in range(len(data)-1):
    if data[i] != data[i+1]:
        count +=1
#count에는 변화횟수 저장.
#어떻게 저장되든 0으로 변한횟수와 1로 변환횟수가 한번밖에 차이가 안날꺼잖아
#(그래야 변화를 하고 "연결"을 생각)
#그러므로 더 적은 횟수가 바로 최소 횟수이다.

res = (count + 1) // 2 #1을 더해주는 이유
#0 1 0 인 경우 변화횟수 2번 뒤집는 횟수 1번
#0 1 0 1 인 경우 변화횟수 3번 뒤집는 횟수 2번. 원하는 몫을 얻기 위해!!

print(res)
profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글