출처: 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
문제
한글 번역은 아래 더보기를 클릭해주세요.
더보기
균형잡힌 문자열은 같은 수의 'L'과 'R' 문자를 갖고 있는 문자열이다.
균형잡힌 문자열 한 개가 주어졌을 때, 균형잡힌 문자열이 가장 많이 생기도록 쪼개라.
쪼개진 균형잡힌 문자열의 최댓값을 반환해라.
예제 1:
- 입력: s = "RLRRLLRLRL"
- 출력: 4
- 설명: s는 같은 수의 'R'과 'L'을 갖고 있는 부분문자열 "RL", "RRLL", "RL", "RL"로 쪼개진다.
예제 2:
- 입력: s = "RLLLLRRRLR"
- 출력: 3
- 설명: s는 같은 수의 'R'과 'L'을 갖고 있는 부분문자열 "RL", "LLLRRR", "LR"로 쪼개진다.
예제 3:
- 입력: s = "LLLLRRRR"
- 출력: 1
- 설명: s는 "LLLLRRRR"로 쪼개진다.
예제 4:
- 입력: s = "RLRRRLLRLL"
- 출력: 2
- 설명: s는 같은 수의 'R'과 'L'을 갖고 있는 부분문자열 "RL", "RRRLLRLL"로 쪼개진다.
제약조건:
- 1 <= s.length <= 1000
- s[i]는 'L' 이거나 'R'이다.
- s는 균형잡힌 문자열이다.
풀이
javascript
const balancedStringSplit = function (s) {
let answer = 0;
let rCount = 0;
// 균형잡힌 문자열을 순회하면서
for (let i = 0, len = s.length; i < len; i += 1) {
if (s[i] === 'R') {
rCount += 1;
} else {
rCount -= 1;
}
// L과 R의 갯수가 같아질 때 === 균형잡힌 부분문자열 발견함
// 정답 +1
if (rCount === 0) {
answer += 1;
}
}
return answer;
};
python
class Solution:
def balancedStringSplit(self, s: str) -> int:
answer = 0
rCount = 0
# 균형잡힌 문자열을 순회하면서
for c in s:
if c == 'R':
rCount += 1
else:
rCount -= 1
# L과 R의 갯수가 같아질 때 === 균형잡힌 부분문자열 발견함
# 정답 +1
if rCount == 0:
answer += 1
return answer
결과
'CS기초 > 코딩테스트' 카테고리의 다른 글
LeetCode 392 (Easy) Is Subsequence (0) | 2021.03.03 |
---|---|
LeetCode 1710 (Easy) Maximum Units on a Truck (0) | 2021.03.03 |
LeetCode 122 (Easy) Best Time to Buy and Sell Stock II (0) | 2021.03.03 |
LeetCode 1217 (Easy) Minimum Cost to Move Chips to The Same Position (0) | 2021.02.24 |
LeetCode 1725 (Easy) Number Of Rectangles That Can Form The Largest Square (0) | 2021.02.24 |