어제의 나보다 성장한 오늘의 나

[프로그래머스][2020 KAKAO BLIND RECRUITMENT][자바]문자열 압축 본문

알고리즘/프로그래머스(Programmers)

[프로그래머스][2020 KAKAO BLIND RECRUITMENT][자바]문자열 압축

NineOne 2021. 4. 23. 21:22

programmers.co.kr/learn/courses/30/lessons/60057

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

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

        for (int i = 1; i <= s.length() / 2; i++) {
            int result = 0;
            String temp = s.substring(0, 1 * i);
            int count = 1;

            int a = s.length() / i;
            if (s.length() % i != 0)
                a += 1;

            for (int j = 1; j < a; j++) {
                String e = "";

                if (j == (a - 1))
                    e = s.substring(j * i);
                else
                    e = s.substring(j * i, (j + 1) * i);

                if (e.length() != i) {
                    result += e.length();
                    break;
                }

                if (temp.equals(e)) {
                    count++;
                } else {
                    if (count == 1) {
                        result += i;
                    } else {
                        result += (count/10)+1 + i;
                    }
                    temp = e;
                    count = 1;
                }
                
                if (j == (s.length() / i) - 1) {
                    if (count == 1) {
                        result += i;
                    } else {
                        result += (count/10)+1 + i;
                    }
                }

            }
            answer = Math.min(result, answer);
        }

        return answer;
    }
}
Comments