반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/60057

 

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

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

programmers.co.kr

 

코드

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

        for (int len = 1; len <= s.length() / 2+1; ++len) {
            // len 갯수만큼 문자열 자르자
            int tempResult = compress(len, s);
            if(answer > tempResult){
                answer = tempResult;
            }
        }

        return answer;
    }

    // len 갯수 만큼 자르자
    private int compress(int len, String s) {
        StringBuilder sb = new StringBuilder();

        int cnt = 1;
        String base = "", temp = "";
        int begin;
        for (begin = 0; begin <= s.length() - len; begin += len) {
            temp = s.substring(begin, begin+len);

            if (base.equals(temp))
                ++cnt;
            else
            {
                if(!"".equals(base)){
                    if(cnt >= 2)
                        sb.append(cnt + base);
                    else
                        sb.append(base);
                }
                base = temp;
                cnt = 1;
            }
        }

        if(cnt >= 2)
            sb.append(cnt + temp);
        else
            sb.append(temp);

        String extra = s.substring(begin);
        if(extra.length() <= len)
            sb.append(extra);

        return sb.length();
    }
}
반응형

'개발 > 알고리즘' 카테고리의 다른 글

[프로그래머스] 뉴스 클러스터링  (0) 2021.09.03
[프로그래머스] 오픈채팅방  (0) 2021.08.26
[프로그래머스] 순위 검색  (0) 2021.08.09
프로그래머스 더 맵게  (0) 2021.07.21
프로그래머스 압축  (0) 2021.07.09
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기