99클럽 코테 스터디 3일차 TIL
💙 JAVA 비기너
class Solution {
public int solution(String s) {
int answer = 0;
char x = s.charAt(0), y;
int firstCnt = 0, otherCnt = 0;
for (int i=0; i < s.length(); i++) {
if(firstCnt == 0) {
x = s.charAt(i);
}
y = s.charAt(i);
if (x == y) {
firstCnt++;
} else {
otherCnt++;
}
if (firstCnt == otherCnt || i == s.length() - 1) {
answer++;
firstCnt = 0;
otherCnt = 0;
}
}
return answer;
}
}
처음엔 String.substring()
를 통해 구현하고 싶었는데 for문 돌릴 때 인덱스 범위를 벗어났다는 오류를 벗어날 수 없어서 String.charAt()
함수를 통해 char 타입으로 하나씩 비교하는 형식으로 갔다.
처음에 x
를 char x;
로 선언만 하고 for문 안에서 값을 선언해줬는데 초기값이 없다고 바로 오류가 떴다...
그래서 졸지에 두번 선언하게 되었다...ㅠㅠ
String.charAt()
안에 파라미터로 i+1
는 최대한 안 넣으려고 했다. String.substring()
을 쓸 때 String.substring(i, i+1)
로 했다가 범위를 벗어났다고 계속 떠서 무서웠다... 그래서 for문 초반에 첫번째 문자의 개수를 세는 firstCnt
가 0이면 첫번째 문자를 저장하는 x
변수를 다시 셋팅해줬다.
테스트 케이스 중 "abracadabra"는 "ab - ra - ca - da - br - a"로 나뉘어지게 되는데 이 때 마지막 "a"가 첫번째 문자의 수와 그 외의 문자의 수가 다름에도 불구하고 마지막 문자이기때문에 분리된 수 answer
가 증가해야한다. 그래서 for문의 마지막에 firstCnt
와 otherCnt
가 같을 때 뿐만 아니라 인덱스 i
가 마지막일 때도 answer
가 증가하도록 하였다.