LeetCode #696
696. count binary substrings
1. 코드
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
2. 풀이
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
Author And Source
이 문제에 관하여(LeetCode #696), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyleee/LeetCode-696저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)