JS 알고리즘 문제풀이/섹션 3. 문자열 탐색

5.문자열 압축

crab. 2022. 1. 13. 11:35

📌강의 정리

문자열의 개수가 문자옆에 쓰여져서 압축하는 문제이다.

s[i]와 s[i+1]을 비교하는데 cnt는 항상 1개있으니까 cnt=1로 해야한다.

반복을 하면서 달라지면 문자를 넣어주고 cnt를 넣어준다.

그 이후 cnt를 1로 초기화 해준다.

반복하면서 cnt가 1이면 cnt는 넣어주지 않는다.

마지막에서는 비교할게 없으므로 빈 문자를 하나 넣어야 한다.

코드 짤때 주의할 점은 포문의 한계값을 정할때 s.length-1을 해야한다는 점이다.

이제 if로 cnt가 1보다 클때만 cnt를 String(cnt)로 추가해준다.

📌느낀점

나랑 푼방식은 같지만 세세한점이 달랐다.

나는 마지막에서 비교할때 undefined로 사용했지만 강사님은 따로 빈문자를 넣어 좀 더 확실하게 하였고 그래서 반복횟수도 -1이 되었다.

또한 cnt를 넣어줄때도 숫자가 아닌 String으로 확실하게 넣어야 한다.

세세한 디테일을 잘 살려야겠다.

//나의 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){
                let answer="";
                let cnt = 1;
                for(let i=0;i<s.length;i++){
                    if(s[i] === s[i+1]){
                        cnt++;
                    }
                    else{
                        answer+=s[i];
                        if(cnt !== 1)   answer+=cnt;
                        cnt=1;
                    }
                }
                return answer;
            }
            
            let str="KKHSSSSSSSE";
            console.log(solution(str));
        </script>
    </body>
</html>
//강사님 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(s){
                let answer="";
                let cnt=1;
                s=s+" ";
                for(let i=0; i<s.length-1; i++){
                    if(s[i]===s[i+1]) cnt++;
                    else{
                        answer+=s[i];
                        if(cnt>1) answer+=String(cnt);
                        cnt=1;
                    }
                }
                return answer;
            }
            
            let str="KKHSSSSSSSE";
            console.log(solution(str));
        </script>
    </body>
</html>

'JS 알고리즘 문제풀이 > 섹션 3. 문자열 탐색' 카테고리의 다른 글

4.가장 짧은 문자거리  (0) 2022.01.13
3.숫자만 추출  (0) 2022.01.13
2.유효한 팰린드롬  (0) 2022.01.13
1.회문 문자열  (0) 2022.01.13