#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int fir = 0, sec = 0, cnt = 0, i = 0;
while (s.size() && i < s.size()) {
char x = s[0];
s[i] == x ? fir++ : sec++;
if (fir == sec) {
s = s.substr(fir + sec);
cnt++;
i = fir = sec = 0;
continue;
} else if (s.size() <= 1) {
cnt++;
break;
}
i++;
}
if (fir != sec && s.size() <= i) cnt++;
return cnt;
}
문제 그대로 첫 글자 x를 두고, 인덱스가 x라면 fir++, 아니라면 sec++로 증가하면서 처음으로 두 횟수가 같아지면 문자열을 잘라주고, 인덱스와 문자 개수를 세는 변수들을 0으로 초기화 해준 뒤 continue로 빠져나간다.
만약 s의 길이가 1 이하라면 문자열을 자르는 대신 cnt를 올린 후 while문을 종료한다.
반복문이 종료되었을 때 마지막 조건에 해당되어서 cnt가 올라간 지 여부를 모르기 때문에 다시 한번 확인해준다.
(만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.)
fir와 sec이 다르고 s의 사이즈가 i 이하라면 마지막으로 cnt를 올려준다. 그리고 cnt를 return해준다.
마지막 조건을 체크하는 걸 깜빡해서 시간을 좀 날렸다,, 문제를 제대로 읽고 그대로 구현하는 것이 중요하다고 생각했다.