[프로그래머스 문제풀이67]문자열 압축 js

매드갈릭레드망고·2021년 10월 1일
0
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을 배출하는 것을 기존 압축로직에 추가해서 끝냈다.

0개의 댓글