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. 문제 풀이
- 문자열을 순차적으로 탐색하면서 'R'과 'L'의 개수 카운트
- 균형을 이룰 때마다 카운트 증가
- 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