프로그래머스-문자열 압축

이호영·2022년 4월 5일
0
class Solution {
    public int solution(String s) {
		// 자를 수 있는 최대 수는 절반까지
		int answer = s.length();
		int half = s.length() / 2;
		
		StringBuilder sb = new StringBuilder();
		sb.append(s);
        
		for(int i = 1 ; i <= half ; i++ ){
			int len = s.length();
			String split = sb.substring(0,i);	// i개씩 짜른 거
			int check = 1;

			for(int j = i ; j <= (s.length()-i) ; j=j+i){
				if(split.equals(sb.substring(j,j+i))){  // 같으면 빼주기
					len -= i;
					check++;
				}else{
					split= sb.substring(j,j+i);	
					if(check != 1){
						len+= num_len(check);		// 앞에 숫자 더해주기
						check = 1;
					}
				}
			}
            
			if(check != 1)
				len+= num_len(check);
			if(answer > len)
                answer = len;            
				
		}
        
		return answer;
	}
    
    private int num_len(int n){
        String num = Integer.toString(n);
        return num.length();
    }
}

0개의 댓글