[Programmers]-문자열 압축

문제

문자열을 1~문자열길이/2 사이 단위로 잘라 압축해 가장작은 문자열길이를 반환하는 문제이다.

코드

class Solution {
    public int solution(String s) {
        int answer = s.length();
        
        for(int i =1;i<=s.length()/2;i++){//단위1~
            
            String str = "";//각단위로 나눠 합친 문자열을 담을 공간
            String temp = s.substring(0,i);//나눈 임시 문자단위
            int count = 1;
            
            for(int j=1;j<s.length()/i;j++){
                
                if(s.substring(i*j,i*j+i).equals(temp)){//같을경우
                    count++;
                }
                else{//같지 않을 경우
                    if(count>1) str += count+temp;
                    else str += temp;
                    
                    temp = s.substring(i*j,i*j+i);//초기화
                    count = 1;
                }
               
            }
            if(count>1) str += count+temp;//마지막에 덜 추가한 부분
            else str += temp;
            
            if(s.length() % i!=0)//단위로 나누어떨어지지 않을경우 나머지부분 추가
                str += s.substring(s.length()-s.length()%i,s.length());
            
            answer = answer >= str.length() ? str.length() : answer;//최소값 넣기
        }
        return answer;
    }
}

코드 설명

주석 설명.

요약

  • substring() 의 활용도
  • 한번도 건드리지 않은 유형은 어려울 뿐이다. 들어다보며 공부하기.