[99클럽 코테 스터디 3일차 TIL] 프로그래머스 문자열 나누기

말하는 감자·2024년 10월 30일
0
post-thumbnail

99클럽 코테 스터디 3일차 TIL

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 문자열

📌 공부한 내용

📍 오늘의 문제

📍 작성 코드 1

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 타입으로 하나씩 비교하는 형식으로 갔다.

처음에 xchar 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문의 마지막에 firstCntotherCnt가 같을 때 뿐만 아니라 인덱스 i가 마지막일 때도 answer가 증가하도록 하였다.

profile
나는 말하는 감자다

0개의 댓글