programmers 문자열 압축 java

밍디·2021년 10월 22일
0

예전에 풀때는 testcase를 하나 충족시킬 수 없어 낙담했는데

다시 도전하니 통과했다. 룰루~!

하지만 시간이 아주 많이 걸렸다ㅠㅠ 한시간 반..

익숙하지 않은 java라서 그런것도있지만 그건 다 변명이야~~!!!!~

열심히 하자.


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

        if(s.length()==1){
            return 1;
        }
        for(int i=1;i<=Math.floor(s.length())/2;i++){
            int min=comb(s,i);
            if(answer>min){
                answer=min;
            }
        }
        return answer;
    }
    
    public int comb(String s,int compression){

        int point=0;
        String target="";
        String result="";
        int count=1;
        

        for(int i=0;i<s.length();i++){
            if(point+compression>=s.length()){//마지막 문자열을 비교해야 할 경우..
                int happy=point+compression;
                String temp=s.substring(point,s.length());

                if(target.equals(temp)){//마지막까지 압축이 된다면.
                    count++;
                    result=result+count+temp;
                    
                }else{//마지막은 다르다면.
                   if(count==1){
                        result=result+target+temp;
                    }else{
                        result=result+count+target+temp;
                    } 
                }
                
                break;
            }else{
                String temp=s.substring(point,point+compression);//2,4
                
                if(target.equals(temp)){//압축이 계속 된다면.
                    count++;

                }else{//압축이 더이상 되지않으면.

                    if(count==1){//압축이 된 기록이 없다면
                       result=result+target;
                    }else{//압축이 된 기록이 있다면
                        result=result+count+target;
                    }
                    count=1;
                    target=temp;
                    
                }
                point=point+compression;

            }
        }

        return result.length();

    }
    
    
}
profile
노후를 위해 꾸준히 공부하자.

0개의 댓글