소프트웨어에 대한 모든 것

LeetCode 풀기 - 1221. Split a String in Balanced Strings 본문

알고리즘/LeetCode

LeetCode 풀기 - 1221. Split a String in Balanced Strings

앤테바 2021. 11. 6. 22:24
반응형

1221. Split a String in Balanced Strings

https://leetcode.com/problems/split-a-string-in-balanced-strings/

 

Split a String in Balanced Strings - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제)

솔루션1)

순차적으로 'L' 문자수를 카운팅, 'R' 문자수를 카운팅해서 같아지는 시점에 balanced string 하나를 카운팅하고 'L', 'R' 문자수는 리셋 시키고 다시 반복

 

class Solution:
    def balancedStringSplit(self, s: str) -> int:
        l_count, r_count = 0, 0
        res = 0
        for s in s:
            if s == 'L':
                l_count += 1
            else:
                r_count += 1
            
            if l_count == r_count:
                res += 1
                l_count, r_count = 0, 0
        return res

솔루션2)

스택 자료구조를 사용한다. 스택이 비어있는 경우 count++, 다른 char이 나오면 stack에서 pop 수행

class Solution:
    def balancedStringSplit(self, s: str) -> int:
        stack = []
        ret = 0
        
        for c in s:
            if len(stack) == 0:
                ret += 1
                stack.append(c)
            elif c == stack[-1]:
                stack.append(c)
            else:
                stack.pop()
                
        return ret

 

반응형
Comments