[프로그래머스] 카카오_문자열 압축 (자바 풀이)

문제

 

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

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

programmers.co.kr

 

풀이

이 문제는 간단한 구현 문제이다. 문자열을 압축할 zip 함수를 만들어 해결하였다. 1개씩 묶는 것부터 s의 길이까지 묶는 갯수를 늘려서 가장 짧은 길이로 압축 되는 것을 확인 하면 된다.

 

코드

import java.util.*;

class Solution {
    public int solution(String s) {
        int answer = 1000000;
        for(int i=1; i<=s.length(); i++){
            answer = Math.min(zip(s,i), answer);
        }
        return answer;
    }
    
    /* 문자열 압축 함수 */
    public static int zip(String s, int len){
        String ret = "";
        String prev = s.substring(0,len);
        String cur = "";
        int cnt = 1;
        
        for(int idx = len ; idx<s.length(); idx+= len){
            if(idx + len > s.length()){ // 마지막 부분 잘리는 경우
                cur = s.substring(idx);
            }else{ 
                cur = s.substring(idx, idx+len);
            }
                        
            if(cur.equals(prev)){  
                cnt++;
            }else{
                if(cnt > 1){
                    ret += String.valueOf(cnt) + prev;
                }else{
                    ret += prev;
                }
                cnt = 1;
                prev = cur;
            }
        }
        
        if(cnt > 1){
            ret += String.valueOf(cnt) + prev;
        }else{
            ret += cur;
        }
                
        if(ret.length() == 0){
            return s.length();
        }
        
        return ret.length();
    }
}
반응형

댓글

Designed by JB FACTORY