문자열 압축 자바스크립트

HyosikPark·2020년 11월 21일
0

알고리즘

목록 보기
30/72
function solution(s) {
    if(s.length == 1) return 1
    let answer = [];
    
    for(let i = 1; i<= s.length / 2; i++) {
        
           let j = 0;
           let str = '';
           let cnt = 1;
        
            while(j < s.length) {
                
                if(s.slice(j,j+i) != s.slice(j + i,j + 2*i)) {
                   str += cnt > 1 ? cnt + s.slice(j,j+i) : s.slice(j,j+i);
                    cnt = 1;
                    j += i
                    continue
                }
                cnt++;
                j += i
            }
        answer.push(str.length)
    }
    return Math.min(...answer)
}

가능한 압축 경우의 수를 모두 고려하여 압축된 길이를 계산한 뒤 가장 짧은 길이를 반환하여 푼다.

s길이의 절반이 최대 압축가능한 단위이므로 s.length / 2만큼 반복문을 돌린다.

while 반복문으로 압축된 문자열을 str에 담고.
str의 길이를 answer에 push한다.
모든 경우에 대한 str의 길이가 answer에 담겨있으므로 answer의 최소값을 반환한다.

0개의 댓글