이진 문자열 s와 다른 값 m이 있다고 가정하면 문자열에 m개의 연속적인 1이 있는지 m개의 연속적인 0이 있는지 확인해야 합니다.
따라서 입력이 s ="1110111000111", m =3과 같으면 0과 1이 연속해서 세 개 있기 때문에 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- str_size :=s의 크기
- count_0 :=0, count_1 :=0
- 0 ~ str_size - 2 범위의 i에 대해
- s[i]가 '0'과 같으면
- count_1 :=0
- count_0 :=count_0 + 1
- 그렇지 않으면
- count_0 :=0
- count_1 :=count_1 + 1
- count_0이 m과 같거나 count_1이 m과 같으면
- 참 반환
- s[i]가 '0'과 같으면
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(s, m): str_size = len(s) count_0 = 0 count_1 = 0 for i in range(0, str_size - 1): if (s[i] == '0'): count_1 = 0 count_0 += 1 else : count_0 = 0 count_1 += 1 if (count_0 == m or count_1 == m): return True return False s = "1110111000111" m = 3 print(solve(s, m))
입력
"1110111000111", 3
출력
True