본문 바로가기
알고리즘/프로그래머스

[프로그래머스 Lv2] 문자열 압축(Java)

by justkeepgoing 2024. 3. 4.
728x90
반응형

1. 문제

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

 

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

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

programmers.co.kr

2. 풀이

  • 나에겐 어려워 다른 사람들의 소스를 참고하였다.
  • 다음에 다시 한번 풀어봐야겠다.

3. 코드

class Solution {
     static int min = Integer.MAX_VALUE;
    public int solution(String s) {
           int answer = 0;
         if(s.length()==1) return 1;
        for(int i =1; i<=s.length()/2; i++){
           answer = divide(s,i);
        }
        return answer;
    }
    static int divide(String s, int idx){
        int cnt=1;
        String result = "";
        String pattern = "";
        for(int i=0; i<=s.length()+idx; i+=idx){
            String now;
            if(i>=s.length()){
                now="";
            }else if(s.length()<i+idx){
                now = s.substring(i);
            }else{
                now = s.substring(i,i+idx);
            }
            if(i!=0){
                if(now.equals(pattern))
                    cnt++;
                else if(cnt>=2){
                    result += cnt+pattern;
                    cnt=1;
                }else
                    result += pattern;
            }

            pattern = now;
        }

        return min = Math.min(min,result.length());

    }
}

 

반응형

 

반응형