Search

Count Binary Substrings

문제 설명 : 0과 1로 이루어진 문자열 중 조건에 맞는 그룹쌍을 몇개 확인할 수 있는지 갯수를 반환
풀이 방법
문제의 조건을 확인하였을 때, 0과 1의 그룹 중 더 적은 숫자의 갯수만큼 카운트하면 된다.
00011 → 2
00111 → 3개
시간복잡도 : O(N)O(N)
성공 코드
class Solution: def countBinarySubstrings(self, s: str) -> int: left = 0 count = 0 while left < len(s): left_count = 1 right_count = 1 # 첫 숫자가 연속되게 몇개 나오는지 확인 while left + 1 < len(s) and s[left] == s[left + 1]: left += 1 left_count += 1 # 탐색 범위를 넘으면 종료 if left + 1 >= len(s): break # 변경되는 위치 right = left + 1 # 변경된 숫자가 연속되게 몇게 나오는지 확인 while right + 1 < len(s) and s[right] == s[right + 1]: right += 1 right_count += 1 count += min(left_count, right_count) # 다음 탐색 위치로 이동 -> 탐색 중 변경된 숫자가 있는 위치 left += 1 right = left return count
Python
복사