오늘도 한문제!
문제 설명
문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.
먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.
이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.
s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다.
만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.
문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요.
제한사항
1 ≤ s의 길이 ≤ 10,000
s는 영어 소문자로만 이루어져 있습니다.

문제는 문자열에 첫 글자를 따서 같으면 -1, 다르면 +1씩 하게되어 합산하였을 때 0이 될 경우해당 문자까지만 문자열을 자르고 자르고난 다음 문자열도 똑같이 첫글자를 따서 계속ㄷ 반복한다음 자른 문자열의 갯수를 반환하는 문제입니다. 만약에 0이 되지 않더라도 문자열이 끝난다면, 끝내지 못한 문자열도 갯수에 포함하는 문제입니다.
class Solution {
public int solution(String s) {
int answer = 0;
int num = 0;
char first = s.charAt(0);
for(char c : s.toCharArray()){
if(num ==0) first = c;
if(c == first){
num -=1;
}else{
num +=1;
}
if(num == 0){
answer++;
}
}
if(num != 0) answer++;
return answer;
}
}

문제를 풀기보다 문제를 파악하는데 시간이 더 걸렸네여... 문제를 이해를 못해서 어떤문제는 맞고 어떤 문제는 틀리고 이게 왜안될까하는 의문을 가지는 시간이 더 걸렸던 것 같아요~ 독해력도 항상 길러야 겠다는 생각이 드는 문제였습니다.