문자열
s
에 대하여 다음 규칙에 따라 해당 문자열을 여러 문자열로 나눌 것이다.
- 첫 글자를 읽고, 이를
x
라고 한다.- 해당 문자열 이후의 문자열들을 읽으며,
x
인 글자와x
가 아닌 글자의 수를 센다. 만일 각 경우의 개수가 같다면, 읽기를 멈추고 지금까지 읽은 문자열을 분리한다.s
를 분리하고 남은 문자열에서 위 과정을 다시 반복한다.
- 만일 더 이상 읽을 부분이 없다면 멈추고 종료한다.
- 최종적으로, 분리된 문자열의 개수를 반환한다.
s | result |
---|---|
"banana" | 3 |
"abracadabra" | 6 |
"aaabbaccccabba" | 3 |
(1) 첫 번째 문자열을 x
에 저장한다.
(2) x
와 같은 문자를 세는 변수 same
과 다른 문자를 세는 변수 diff
를 각각 0
으로 초기화한다.
(3) 0
부터 s.length()
까지 세며, 같은 문자의 개수와 다른 문자의 개수를 센다.
(4) 만일 두 변수(diff
와 same
)의 값이 같다면, answer
을 증감시키고, 그 다음 문자열을 x
로 지정한다.
class Solution {
public int solution(String s) {
int answer = 0;
int same = 0;
int diff = 0;
char ch = s.charAt(0);
for(int i=0;i<s.length();i++) {
if (same == diff) {
answer++;
ch = s.charAt(i);
}
if (s.charAt(i) == ch) same++;
else diff++;
}
return answer;
}
}
문제로 주어진 조건을 차근차근 코드로 변환하면 되는 풀기 쉬운 문제이다
안녕하세요, 99클럽 그룹 리더 조커입니다!
풀이 잘 봤습니당
앞으로도 힘내서 매일 TIL 도전해 보세요! 화이팅입니다 :)
99클럽 https://bit.ly/3TN5TBL