class Solution {
public int solution(String s) {
int answer = 1;
char initChar = s.charAt(0);
int repeatCnt = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == initChar) {
repeatCnt++;
} else {
repeatCnt--;
if (repeatCnt == 0) {
if (i + 1 < s.length()) {
initChar = s.charAt(i + 1);
answer++;
}
}
}
}
return answer;
}
}
첫 문자를 initChar에 담아놓고 그 뒤에 오는 문자들을 비교하며 반복 횟수를 비교한다.
reatCnt가 0이 되면 시작 문자의 개수와 다른 문자의 개수가 같아지는 것 이므로,
(다음 문자가 있다면)initChar를 다음 문자로 지정하고, answer++ 한다.
(새로 문자가 시작 할 때 ++ 되므로 answer는 1로 초기화했다.)
class Solution {
public int solution(String s) {
char prev = '1';
int same = 0, different = 0, answer = 0;
for (char c : s.toCharArray()) {
if (prev == '1') {
prev = c;
same++;
answer++;
} else if (prev == c) {
same++;
} else {
different++;
}
if (same == different) {
prev = '1';
same = 0; different = 0;
}
}
return answer;
}
}
개념은 똑같다. 다만 repeatCnt 대신 --하는 대신 횟수를 직접 세주었다.