LeetCode #696

5057 단어 leetcodeleetcode

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. 풀이

이 문제는 원리는 이해했는데 코드를 작성 못 한(?) 케이스다.

문제를 이해하고, 테스트케이스의 값이 어떻게 나올 줄 알았는데 코드로 못치겠더라

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

좋은 웹페이지 즐겨찾기