function solution(s) {
let answer = [s.length];
let half = Math.floor(s.length/2);
let sl = s.length;
for(let i=1;i<=half;i++){
let cnt = 1;
let str = "";
for(let j=0;j<sl;j+=i){
let first_str = s.substring(j,j+i);
let sec_str = s.substring(j+i,j+i*2);
if(first_str === sec_str) cnt++;
else{
if(cnt === 1) str = str + first_str;
else{
str = cnt + str + first_str;
cnt = 1;
}
}
}
answer.push(str.length);
}
answer = Math.min(...answer);
return answer;
}
* 테스트 케이스 중 문자열이 단 1개인 경우가 있다. 이 경우 for문에 들어가지 못해서 s의 최고 길이를 미리 answer에 넣어두면 된다.
* 기본적인 흐름은 1차 for문은 입출력 예 "aabbaccc"를 기준으로 1칸[a] 2칸[aa] 3칸[aab] 이렇게 늘려가면서 탐색하도록 하고, 2차 for문은 1칸일 때 [a] [a] [b] [b] 2칸일 때 [aa] [bb] [ac] [cc] 이런 식으로 탐색하도록 하였다.
그 이후는 문자열을 substring을 통해 잘라가면서 만약 앞의 문자와 다르다면 이전까지 담아둔 str의 내용을 기존 str와 합쳐준다(개수를 포함해서).
느낀 점 : 문자열 관련해서 앞의 칸과 비교하는 식의 문제는 이렇게 접근하면 좋을 것 같다는 생각이 들었다.