말랑한 하루

[Programmers] 문자열 압축 (Lv 2, JavaScript) 본문

문제풀이/Programmers

[Programmers] 문자열 압축 (Lv 2, JavaScript)

지수는말랑이 2022. 7. 8. 20:34
반응형

[ 학습 내용 ]
substr(start, end) : start index 요소부터 end-1 요소까지의 문자열을 반환한다.


[ 소스 코드 ]

function solution(s) {
    var answer = s.length;
    
    for(var i=1; i<=parseInt(s.length/2); i++) {
        let str = "";
        let cnt = 1;
        let tempStr = s.substr(0, i);
        
        for (var idx=i; idx<=s.length; idx+=i) {
            let nextStr = s.substr(idx, i);
            
            if (tempStr === nextStr) {
                cnt += 1;
            } else {
                cnt === 1 
                    ? str = str+tempStr 
                    : str = str+cnt+tempStr;
                      
                cnt = 1;
                tempStr = nextStr;
            }
        }
        cnt === 1
            ? str = str+tempStr
            : str = str+cnt+tempStr;
        
        answer = Math.min(answer, str.length);
    }
    return answer;
}

[ 심화 코드 ]
-
[ 코드 분석 ]

주어지는 문자열을 1~n번까지 자를 때, 가장 최소가 되는 압축된 문자열의 길이를 구하는 문제이다.

문자열의 길이를 구하는데는 다음과 같은 조건이 걸려있다.

1) 문자열을 압축하지 않는경우 문자열의 길이가 최소 압축 길이

2) 압축될 수 있는 문자열의 길이는 (주어진 문자열의 길이 / 2) 이다.

3) 문자열 내 압축 가능한 문자를 찾는것이 아닌, 0~n index를 순환하며 압축가능한 문자열을 찾아야한다.

 

문제를 3번의 전자로 이해하여 풀이에 애먹었다.

반응형
Comments