Algorithm/Programmers

[Lv.2] 문자열 압축 : Java

say! 2025. 9. 26. 11:41
728x90

 

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

import java.util.*;

class Solution {
    public int solution(String s) {
        int n = s.length();
        if(n==1) return 1;  // 문자열 길이가 1인 경우 바로 1 리턴
        
        int answer = n; // 초기값은 원본 길이로 설정
        
        // 문자 조각 단위를 1~n/2까지 시도
        for(int k=1; k<=n/2; k++){
            StringBuilder sb = new StringBuilder();
            String pre = s.substring(0, k);
            int cnt = 1;
            
            for(int i=k; i<n; i+=k){
                int end = Math.min(i+k, n);
                String cur = s.substring(i, end);
                
                if(cur.equals(pre)){
                    cnt++;
                }
                else{
                    if(cnt>1) sb.append(cnt);
                    sb.append(pre);
                    pre = cur;
                    cnt=1;
                }
            }
            
            if(cnt>1) sb.append(cnt);
            sb.append(pre);
            
            answer = Math.min(answer, sb.length());
        }
        return answer;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

[Lv.2] JadenCase 문자열 만들기 : Java  (0) 2025.09.26
[Lv.2] 괄호 회전하기 : Java  (0) 2025.09.26
[Lv.2] 다리를 지나는 트럭 : Java  (0) 2025.09.26
[Lv.2] 짝지어 제거하기 : Java  (0) 2025.09.26
조이스틱 : Java  (1) 2025.07.05