균형 잡힌 문자열로 문자열 분할

제로콜라좋아요·2024년 6월 5일
0

algorithem

목록 보기
17/37

문제설명

균형 잡힌'L' 문자열은 동일한 수의 및 문자를 갖는 문자열입니다 'R'.

균형 잡힌 문자열이 주어지면 s다음과 같이 몇 개의 하위 문자열로 분할합니다.

각 하위 문자열은 균형을 이루고 있습니다.
얻을 수 있는 균형 잡힌 문자열의 최대 개수를 반환 합니다 .

예시 1:

입력: s = "RLRRLLRLRL"
출력: 4
설명: s는 "RL", "RRLL", "RL", "RL"로 분할될 수 있으며, 각 하위 문자열에는 동일한 수의 'L'과 'R'이 포함됩니다.
예 2:

입력: s = "RLRRRLLRLL"

출력: 2
설명: s는 "RL", "RRRLLRLL"로 분할될 수 있으며 각 하위 문자열에는 동일한 수의 'L'과 'R'이 포함됩니다.두 번째 및 다섯 번째 하위 문자열이 균형을 이루지 않기
때문에 s를 "RL", "RR", "RL", "LR", "LL"로 분할할 수 없습니다 .
예시 3:

입력: s = "LLLLRRRR"
출력: 1
설명: s는 "LLLLRRRR"로 분할될 수 있습니다.

제약:

2 <= s.length <= 1000
s[i]'L'또는 입니다 'R'.
s균형 잡힌 문자열 입니다 .

문제풀이

class Solution:
    def balancedStringSplit(self, s: str) -> int:
        count = 0
        balance = 0
        
        for char in s:
            if char == 'L':
                balance += 1
            else:  # char == 'R'
                balance -= 1
            
            if balance == 0:
                count += 1
        
        return count

<내 코드의 흐름>

  1. balancedStringSplit이라는 메서드(함수)를 정의합니다. 이 메서드는 자기 자신(self)과 문자열 s를 매개변수로 받고, 정수를 반환합니다. 이 함수의 목적은 주어진 문자열 s를 균형잡힌 부분 문자열로 최대한 많이 나누고, 그 개수를 세는 것입니다.
  2. count라는 변수를 0으로 초기화합니다. 이 변수는 균형잡힌 부분 문자열의 개수를 세는 데 사용됩니다.
  3. balance라는 변수를 0으로 초기화합니다. 이 변수는 문자열을 순회하면서 'L'과 'R' 문자의 균형을 체크하는 데 사용됩니다.
  4. 문자열 s를 순회하는 for 루프를 시작합니다. 각 반복에서 char는 s의 현재 문자를 참조합니다.
  5. 만약 현재 문자가 'L'이라면, balance를 1 증가시킵니다.
  6. 그렇지 않고 현재 문자가 'R'이라면(else 조건), balance를 1 감소시킵니다.
  7. 만약 지금까지 탐색한 부분에서 'L'과 'R'의 개수가 동일하다면 count를 1 증가시켜 균형잡힌 부분 문자열을 하나 찾았음을 나타냅니다.
  8. 마지막으로, 균형잡힌 부분 문자열의 총 개수를 나타내는 count를 반환합니다.
profile
개발자계의 제로콜라

0개의 댓글