Algorithm/프로그래머스

[프로그래머스] 문자열 압축(자바) / 문자열

미스터로즈 2021. 10. 25. 19:29

문제 설명

 

입출력

 

문제풀이

class Solution {
    public int solution(String s) {
        int answer = s.length();

        for(int k=1 ; k<=s.length()/2 ; k++) {
            StringBuilder temp = new StringBuilder();

            for(int i=0 ; i<s.length() ; i = i+k) {
                String word = "";

                if(i+k >= s.length()) {
                    word = s.substring(i, s.length());
                }else{
                    word = s.substring(i, i+k);
                } 

                int cnt = 1;
                StringBuilder sb = new StringBuilder();

                for(int j=i+k ; j<s.length() ; j=j+k) {
                    String word2 = "";

                    if(j+k >= s.length()) {
                        word2 = s.substring(j, s.length());
                    } else {
                        word2 = s.substring(j, j+k);
                    }

                    if(word.equals(word2)) {
                        cnt++;
                        i = j;
                    } else {
                        break;
                    }
                }

                if(cnt == 1){
                    sb.append(word);
                }else{
                    sb.append(cnt).append(word);
                } 
                
                temp.append(sb.toString());
            }

            answer = Math.min(answer, temp.toString().length());
        }

        return answer;
    }
}

 

※ 내 생각

이 문제는 문자열을 이용하는 문제입니다.

문자열 중에서 substring을 활용하면 쉽게 해결할 수 있습니다.
단위 별로 짤라서 확인하면서 갯수를 세주면 됩니다.