PS/프로그래머스

[완전탐색][JS] 문자열 압축

returnzero 2022. 7. 26. 19:20
function solution(s) {
    var answer = s.length;
    let maxnum= Math.floor(s.length/2);
    function Breakdown( i, chars){
        let breakdown=[];
        let temp='';
        let counter=0;
        for (let k=0; k<chars.length;k++){
            temp+=chars[k];
            counter++;
            if(counter==i){
                breakdown.push(temp);
                temp='';
                counter=0;
            }
        }
        if(temp !=='') breakdown.push(temp);
        return breakdown;
    }
    
    for(let i=1; i<=maxnum;i++){
        let sampleString='', repition =1; 
        let chars=Breakdown(i,s);
        let current=chars[0];
        // console.log(chars);
        for(let j=1;j<chars.length;j++){
            // console.log(current, chars[j])
            if(chars[j]==current){
                repition++;
            }
            else{
                // console.log("different");
                if(repition>1){
                    sampleString+=String(repition);
                    sampleString+=current;
                    current=chars[j];
                    repition=1;
                }
                else{
                    sampleString+=current
                    current=chars[j];
                }
            }
        }
        if(repition>1){
        sampleString+=String(repition);
        }
        sampleString+=current;
        // console.log(sampleString);
        answer= Math.min(sampleString.length,answer);
    }
    
    return answer;
}

문자열을 보기 좋게 쪼개는 함수를 먼저 선언한다면 조금 편하게 구현할 수 있다. 그 외에는 특별한 점이 없는 구현 문제이다.