개발 낙서장

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

Algorithm/Programmers

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

권승준 2024. 1. 30. 09:46

문자열 나누기

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

 

프로그래머스

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

programmers.co.kr

풀이 방법

처음에 문제 이해를 잘 못했는데 결국 문자 x를 기준으로 문자열을 탐색해가면서 'x가 나온 횟수'와 'x가 아닌 문자가 나온 횟수'가 같아지는 부분을 기점으로 나누는 것이다.예를 들어 abcdefg라는 문자열이 있다면 첫 문자 'a'를 기준으로 잡고 탐색하는데 'b'에 도달했을 때 'a'가 나온 횟수 1, 'a'가 아닌 문자가 나온 횟수 1이므로 'ab'라는 문자열로 나눈다.
이후 'c' 문자를 기준으로 잡고 'd'에 도달했을 때 두 횟수가 각각 1이므로 'cd'라는 문자열로 나눈다.
이렇게 하면 결국 'ab', 'cd', 'ef', 'g' 총 4개의 문자열로 나눠지게 된다.
문제가 문자열 나누기이지만 사실 그냥 count해주면서 비교하면 되는 간단한 문제이다.

소스 코드

더보기
class Solution {
    public int solution(String s) {
        int answer = 0;
        
        int count_word = 1;
        int count_not_word = 0;
        Character word = s.charAt(0);

        for(int i = 1; i < s.length(); i++) {
            if(word.equals(s.charAt(i))) {
                count_word++;
            }
            else {
                count_not_word++;
            }

            if(count_word == count_not_word) {
                answer++;
                count_word = 0;
                count_not_word = 0;
                if(i < s.length() - 1) {
                    word = s.charAt(i + 1);
                }
            }
        }

        if(count_word > 0) {
            answer++;
        }
        
        return answer;
    }
}
Comments