kakasoo

[node.js] 문자열 압축하기 ( 프로그래머스 레벨2 ) 본문

프로그래밍/알고리즘 풀이

[node.js] 문자열 압축하기 ( 프로그래머스 레벨2 )

카카수(kakasoo) 2021. 6. 29. 13:15
반응형
// 프로그래머스 레벨2 문자열 압축하기를 풀었습니다.
// 매우 어려웠다.

const solution = (s) => {
    if (s.length === 1) {
        return 1;
    }

    let minValue = 987654321;
    for (let i = 1; i <= s.length / 2; i++) {
        let cnt = 1;
        let str = s.substr(0, i);

        for (let j = i; j <= s.length - i; j = j + i) {
            let prev = s.substr(j - i, i);
            let next = s.substr(j, i);
            // console.log("prev, next : ", prev, next);
            if (prev === next) {
                cnt++;
                if (s.length - i < i + j) {
                    str += cnt;
                }
            } else {
                if (cnt !== 1) {
                    str += cnt;
                    str += next;
                } else {
                    str += next;
                }
                cnt = 1;
            }
        }
        str += s.substr(s.length - 1 - (s.length % i), s.length % i);

        if (str.length < minValue) {
            minValue = str.length;
        }
    }
    return minValue;
};
반응형