function solution(s) {
const answers=[];
for(let letters=1;letters<s.length/2+1;letters++){
for(let i=0;i<letters;i++){
let an=""
an=s.slice(i,i+letters);
answers.push(slicedStrLengthCheck(i,an,s));
}
}
return Math.min.apply(Math,answers);
}
function slicedStrLengthCheck(index,substr,str){
if(index!=0){
return 1000;
}
let lastWord=substr;
let lastWordLength=substr.length;
let lastNum=0
let answerWord=""
for(let i=0;i<index;i++){
answerWord+=[...str][i];
}
for(let i=index;i<str.length+lastWordLength;i+=lastWordLength){
if(str.slice(i,i+lastWordLength)===lastWord){
lastNum++;
continue;
}
if(lastNum!==1){
answerWord+=`${lastNum}${lastWord}`
}
else{
answerWord+=lastWord
}
lastWord=str.slice(i,i+lastWordLength);
lastNum=1;
}
return answerWord.length;
}
처음에 당황했다 제일 앞부터 잘라야한다는 것을 못읽어서
어떻게 하지 당황하다가
생각해보니 문자열 반으로 잘랐을 때의 부분문자열의 길이가
압축할 수 있는 최대 문자열 크기란 것을 깨닫고
관련된 로직을 짰다.
그런데 실행결과를 보니 틀려서 문제를 다시 읽어 보니 앞에서부터 자르면 되는 거였어서
현타가 온 상태로 그냥 부분문자열의 index가 0이 아니면 최대크기인 1000을 배출하는 것을 기존 압축로직에 추가해서 끝냈다.