answer
를 문자열의 길이로 초기화한다.문자열 길이의 절반
이다.문자열을 잘라 압축하여 표현한 문자열 중 "가장 짧은 것"의 길이
이므로, 문자열을 묶는 단위는 최대 문자열 길이의 절반까지만 살펴보면 된다.to_string
이용)answer
를 비교하여 최솟값으로 갱신해준다.#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(string s) {
int size = s.size();
unsigned long answer = size;
for(int unit = 1; unit<=size/2; unit++){
int cnt = 1;
string str = s.substr(0,unit);
string tmp = "";
for(int i = unit; i<size; i+=unit){
if(str == s.substr(i,unit)) cnt++;
else{
if(cnt>1) tmp += to_string(cnt);
tmp += str;
str = s.substr(i,unit);
cnt = 1;
}
}
if(cnt>1) tmp += to_string(cnt);
tmp += str;
answer = min(answer, tmp.size());
}
return answer;
}
문자열을 다루는건 어렵다