[Programmers] 문자열 압축

Date:

[Programmers] 문자열 압축

Problem URL : 문자열 압축

#include <string>

using namespace std;

int solution(string s) {
    int answer = s.length();
    // 압축 길이는 최소 1부터 최대 전체 문자열의 절반이다.
    for (int i = 1; i <= s.length() / 2; i++) {
        int len = s.length();
        int count = 0;
        // 맨 앞에서부터 i씩 잘라준다.
        for (int j = i; j < s.length(); j += i) {
            if (s.substr(j, i) == s.substr(j - i, i)) {
                count++;
            } else {
                //중복이 있으면 압축하고 축소된 길이 계산
                if (count) {
                    len -= i * count;
                    len += to_string(count + 1).length();
                }
                count = 0;
            }
        }
        //중복이 있으면 압축하고 축소된 길이 계산
        if (count) {
            len -= i * count;
            len += to_string(count + 1).length();
        }

        if (len < answer) {
            answer = len;
        }
    }
    return answer;
}

댓글