#include <string> #include <vector> #include <algorithm> #include <iostream> using namespace std; int solution(string s) { int answer = 0; int length = s.length(); string new_str; answer = length; for (int i=1; i <= length/2; i++) { string tok = s.substr(0, i); // 자를 단위 string left_str = s.substr(i); // 자르고 남은 문자열 string new_str; int tok_cnt = length/i; int cnt = 1; // tok 과 중복되는 값 bool br = false; for (int j = 1; j < tok_cnt; j++) { if (tok == left_str.substr(0, i)) // tok 과 중복 { br = true; cnt++; } else // 다음 tok { br = false; if (cnt > 1) new_str += to_string(cnt); new_str += tok; tok = left_str.substr(0, i); cnt = 1; } if (j < tok_cnt-1) left_str = left_str.substr(i); } if (br) { new_str += to_string(cnt); new_str += tok; if (length % i) new_str += s.substr(length - length%i); } else { new_str += s.substr(i*(tok_cnt-1)); } if (answer > new_str.length()) answer = new_str.length(); } return answer; }