substr 을 제대로 알고 있고,
문제에서 주어진 , 반드시 첫번째를 기준으로 하는 조건과
word1 vs word2라고 한다면 언제 word1의 문자열을 전부 교체할지를 판단하면 된다.
https://velog.io/@kwt0124/string-substr
만약에 aaabbccc이고 cut이 1이라고 한다면
word는 3a2b에서 끝난다. 왜냐하면 for문에서 size() 까지만 돌기 때문이다.
이에 대한 처리를 해야한다.
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = s.length();
for(int cut = 1; cut <= s.length() / 2; cut++)
{
string word1 = s.substr(0, cut);
int cnt = 1;
string result = "";
//0부터 시작하는 것이 아니라, 그 뒤의 인덱스부터 확인하는 것이므로, cutting된 인덱스를 초기값으로 설정한다.
//증감식도 설정해야 한다.
string tmp = "";
for(int i = cut; i < s.length(); i += cut)
{
if(s.substr( i , cut ) == word1)
{
cnt += 1;
}
else
{
//기준값을 변경해야 한다.
//동일한게 없음!
if(cnt == 1)
{
tmp = word1;
}
else
{
tmp = to_string(cnt) + word1;
}
word1 = s.substr(i, cut);
cnt = 1;
result += tmp;
}
}
//이 부분 중요하다...
if(cnt == 1)
{
tmp = word1;
}
else
{
tmp = to_string(cnt) + word1;
}
result += tmp;
if(answer > result.length())
answer = result.length();
}
return answer;
}