(level1) 문자열 나누기

송재호·2025년 8월 15일
0

https://school.programmers.co.kr/learn/courses/30/lessons/140108

문자열을 제시된 규칙에 따라 분해하는 문제다.
아래를 핵심으로 생각하고 풀었다.

  • x에 대한 변수와, x값과 x가 아닌 값에 대한 카운트 변수 필요
  • 초기화용 플래그 필요 -> 소문자로만 이루어졌다고 했으므로 '#'으로 초기화
  • 초기값을 만났을 때는 x를 세팅하고 카운트 증가
  • 그 외 x == s.charAt(i)면 x++, 아니면 nx++
  • 카운트 증가시킨 뒤 정확히 일치하게 되는 순간 다시 초기화하고, answer++

이후 x에 대한 카운트와 nx에 대한 카운트가 다른 값이라면,
위 분해 기준으로 처리하지 못한 글자가 남아있다는 뜻이 된다.
그리고 그것은 하나의 문자열 덩어리로 취급되므로, answer++ 처리해주면 끝난다.

class Solution {
    public int solution(String s) {
        int answer = 0;
        
        char x = '#';
        int xCount = 0;
        int nxCount = 0;
        
        for (int i=0; i<s.length(); i++) {
            if (x == '#') {
                x = s.charAt(i);
                xCount++;
                continue;
            }
            
            if (s.charAt(i) == x) {
                xCount++;
            } else {
                nxCount++;
            }
            
            if (xCount == nxCount) {
                x = '#';
                xCount = 0;
                nxCount = 0;
                answer++;
            }
        }
        
        if (xCount != nxCount) {
            answer++;
        }
        return answer;
    }
}
profile
식지 않는 감자

0개의 댓글