프로그래머스 문자열 압축 Java - 2020 카카오 공채

문제

주어진 문자열을 여러 방식으로 압축하여 만든 새로운 문자열 중 가장 짧은 길이를 반환하는 문제이다.

aabbaabbcd -> 2aabbcd 또는 2a2b2a2bcd 로 변환할 수 있지만 전자가 더 짧으므로 7을 반환하면 된다.

접근

풀이

1번

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

    for(int n=1 ; n<=s.length()/2 ; n++) {
        StringBuilder temp = new StringBuilder();
        
        for(int i=0 ; i<s.length() ; i = i+n) {
            String word = "";
            
            if(i+n >= s.length()) word = s.substring(i, s.length());
            else word = s.substring(i, i+n);
            
            int cnt = 1;
            StringBuilder sb = new StringBuilder();
            
            for(int j=i+n ; j<s.length() ; j=j+n) {
                String word2 = "";
                
                if(j+n >= s.length()) {
                    word2 = s.substring(j, s.length());
                } else {
                    word2 = s.substring(j, j+n);
                }
                
                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;
}

이 문제는 요구사항을 코드로 구현할 수 있는지를 물어보는 문제이다.

결론



Related Posts