99클럽 코테 스터디 17일차 TIL + 그리디

Boxx-Ham·2024년 6월 5일
0

99TIL

목록 보기
9/19
post-thumbnail

1. 오늘의 문제

Split a String in Balanced Strings

2. 문제 분석

  • s : 'L' 혹은 'R'로 이뤄진 균형 잡힌 문자열
  • s는 L과 R의 개수가 같은 문자열로 나뉨
  • L과 R의 개수가 같은 문자열의 최대 값을 리턴
  • s.length : 2 이상, 1,000 이하
  • s[i] : L 또는 R
  • s는 균형잡힌 string

  • Example 1
    • Input: s = "RLRRLLRLRL"
    • Output: 4
    • Explanation: s can be split into "RL", "RRLL", "RL", "RL", each substring contains same number of 'L' and 'R'.
  • Example 2
    • Input: s = "RLRRRLLRLL"
    • Output: 2
    • Explanation: s can be split into "RL", "RRRLLRLL", each substring contains same number of 'L' and 'R'. Note that s cannot be split into "RL", "RR", "RL", "LR", "LL", because the 2nd and 5th substrings are not balanced.
  • Example 3
    • Input: s = "LLLLRRRR"
    • Output: 1
    • Explanation: s can be split into "LLLLRRRR".

3. 문제 풀이

  1. 문자열을 순차적으로 탐색하면서 'R'과 'L'의 개수 카운트
  • 'R'이면 +1, 'L'이면 -1
  1. 균형을 이룰 때마다 카운트 증가
  • balance가 0이면 count +1
  1. count값 리턴

4. 구현 코드

class Solution {
    public int balancedStringSplit(String s) {
        // 카운트 변수들
        int balance = 0;
        int count = 0;

        for (int c : s.toCharArray()){
            if (c == 'R'){
                balance++;
            } else {
                balance--;
            }

            if (balance == 0) {
                count++;
            }
        }

        return count;
    }
}

5. 오늘의 회고

  • 어려웠다. 뭘 어떻게 해야하는지 알 수가 없었다. 그래도 'R', 'L'의 균형을 맞추는 것이니깐 +1, -1 이런식으로 하면 되겠다 했었다. 먼저 스택을 생각했는데 스택보다 그냥 배열로 돌리는게 구현이 편하고 쉬운 것 같아 선택했다.
  • 내일은 더 열심히 해야겠다!

#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL

0개의 댓글