BOJ/Python

[BOJ/백준] 1439 - 뒤집기 (Python)

tjdms4327 2025. 1. 28. 15:59

문제

문제링크

1과 0으로만 이루어진 문자열이 있다.

이를 모두 같은 숫자로만 만들기 위해 전체 혹은 부분을 0은 1로, 1은 0으로 뒤집는다.

이 행동의 최소 횟수를 출력하라.

 

풀이

각각의 숫자로 이루어진 부분을 구하고 둘 중 개수가 적은 만큼이 최소횟수가 된다.

정규표현식 모듈인 re을 사용한다.

findall로 각각 패턴에 매칭되는(1로만 이루어진, 0으로만 이루어진) 부분을 찾아 리스트에 저장한다.

두 리스트의 개수 중 작은 것을 구하면 된다.

 

코드

import sys
input=sys.stdin.readline
import re

s=input().strip()
zeros=re.findall(r'0+',s)
ones=re.findall(r'1+',s)

print(min(len(zeros), len(ones)))