알고리즘/백준
[python] 백준 1439번 뒤집기
펄찌
2022. 1. 31. 21:53
문제 풀이
문자열 S를 입력받아서 모든 문자를 1로 만들 때 최소한의 뒤집기 횟수를 출력해야 한다.
예제 입력 4를 보면
11001100110011000001
인데 연속된 0만 보자면 00, 00, 00, 00000 총 4개가 있고
연속된 1만 보자면 11, 11, 11, 11, 1 총 5개가 있는 것을 볼 수 있다.
여기서 생각한 방법은 split함수를 쓰는 것이었다.
문자열 S를 입력받고 해당 문자열을 0이나 1을 구분자로 두면 쉽게 풀 수 있을 것 같았다.
s1 = s.split('0')
s2 = s.split('1')
위와 같이 각각 0과 1로 구분하였을 때 결과이다.
배열에 빈 문자열이 있지만 값이 있을 때만 카운트하면 된다.
s1은 연속된 0의 개수의 배열이 될 것이고 s2는 연속된 1의 개수의 배열이 될 것이다.
해당 s1과 s2를 비교해 더 작은 값을 출력하면 된다.
완성된 코드!!😊👍
def func(s):
count =0
for val in s:
if val:
count += 1
return count
s1 = input()
s2 = s1.split('0')
s3 = s1.split('1')
print(min(func(s2), func(s3)))