💡/코딩 테스트

[프로그래머스] 문자열 나누기

defyuil 2025. 2. 24. 20:56

 

이 문제를 해결하는 방법은 문자열을 왼쪽에서 오른쪽으로 순차적으로 읽으며 주어진 규칙을 적용하는 것!!

 

class Solution {
    public int solution(String s) {
        int answer = 0;
        int xCount = 0, otherCount = 0;
        char x = s.charAt(0);

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == x) {
                xCount++;
            } else {
                otherCount++;
            }

            if (xCount == otherCount) {
                answer++;
                // 새로운 x 설정
                if (i + 1 < s.length()) {
                    x = s.charAt(i + 1);
                }
                xCount = 0;
                otherCount = 0;
            }
        }

        // 마지막 처리
        if (xCount != 0 || otherCount != 0) {
            answer++;
        }

        return answer;
    }
}

 

 

더보기

 

  • 첫 글자(x) 선택
    문자열을 순회하며 첫 글자를 x로 설정한다

 

  • x와 다른 글자 개수 세기
    • xCount: x의 등장 횟수
    • otherCount: x가 아닌 다른 글자의 등장 횟수
    • 문자를 하나씩 읽으며 xCount와 otherCount를 업데이트한다

 

  • 두 횟수가 같아지면 분리
    • xCount == otherCount가 되면 지금까지 읽은 문자열을 하나의 그룹으로 분리하고, answer 값을 증가시킴
    • 새로운 부분 문자열을 탐색하기 위해 초기화한다

 

  • 남은 문자열 처리
    • 만약 문자열 끝까지 갔는데 아직 xCount != otherCount라면 마지막으로 하나의 그룹을 추가한다