프로그래머스 코딩테스트/JAVA

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

Coding-Su 2024. 8. 22. 18:25
728x90

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

정답

class Solution {
    public int solution(String s) {
        int answer = 0;
        int countX = 0;
        int countAlse = 0;
        String x = "";
        for(int i = 0; i < s.length(); i++) {
            if(x.equals("")) {
                countX++;
                x += s.charAt(i);
            } else if(x.equals(s.charAt(i) + "")) {
                countX++;
            } else {
                countAlse++;
            }
            if(countX == countAlse) {
                x = "";
                countX = 0;
                countAlse = 0;
                answer++;
            }
        }
        if(countX != 0 || countAlse != 0) answer++;
        
        return answer;
    }
}

 

 

 

풀이

        int countX = 0;
        int countAlse = 0;
        String x = "";

x와 x가 아닌 다른 글자들이 나온 횟수를 각각 구해야하기 때문에 countX와 countAlse를 선언하고 0으로 초기화 했습니다.

x는 처음 나온 글자를 저장합니다.

 

            if(x.equals("")) {
                countX++;
                x += s.charAt(i);
            } else if(x.equals(s.charAt(i) + "")) {
                countX++;
            } else {
                countAlse++;
            }

첫번째 조건문에서 만약 x가 비어있다면 countX를 하나 더하고, x에 문자열 s에서 글자 하나를 저장합니다.

만약 x에 값이 있다면 현재 글자와 s에 자장되어 있는 글자를 비교하고 같다면 countX를 하나 증가하고, 다르다면 else문에서 countAlse를 하나 증가합니다.

 

           if(countX == countAlse) {
                x = "";
                countX = 0;
                countAlse = 0;
                answer++;
            }

만약 countX와 countAlse의 값이 같아진다면 처음에 선언했던 3 변수 모두 다시 초기화를 해주고, answer를 증가하였습니다.

 

        if(countX != 0 || countAlse != 0) answer++;

만약 countX나 countAlse에 0이 아닌 다른 숫자가 있다는 뜻은 문자열 s에 값이 남아있었다는 의미 임으로 answer를 하나 더 증가하여 문제의 정답을 구했습니다.

728x90