class Solution:
def countBinarySubstrings(self, s: str) -> int: #"00110011"
cnt = 1
consecutive_list = []
result = 0
if len(s) == 1 : return 0
s += " "
for i in range(len(s)-1) :
if s[i] == s[i+1] :
cnt += 1
else :
consecutive_list.append(cnt)
cnt = 1
if len(consecutive_list) == 1 : return 0
for i in range(len(consecutive_list)-1):
result += min(consecutive_list[i], consecutive_list[i+1])
return result
이 문제는 원리는 이해했는데 코드를 작성 못 한(?) 케이스다.
문제를 이해하고, 테스트케이스의 값이 어떻게 나올 줄 알았는데 코드로 못치겠더라
Discuss에서 다른 사람들은 어떻게 생각했나 알아보던 중, 연속된 개수를 새로운 배열에
추가하여 앞, 뒤 중 최소값을 더하는 메커니즘이라는 걸 알게 되었다.
이해는 쉽고 코드작성은 어려워
도움 받은 링크
1. https://leetcode.com/problems/count-binary-substrings/discuss/1172569/Short-and-Easy-w-Explanation-and-Comments-or-Keeping-Consecutive-0s-and-1s-Count-or-Beats-100
2. https://leetcode.com/problems/count-binary-substrings/discuss/778737/Easy-to-Understand-O(N)-Python