[프로그래머스] 문자열 압축 - JavaScript

이은빈 EUNBIN·2021년 1월 13일
0
post-thumbnail

📌 문제

https://programmers.co.kr/learn/courses/30/lessons/60057

📌 풀이

function solution(s) {
    let answer = 0;
    let arrForZippedStr = [];
    
    for(let i = 0; i < s.length; i++) {
        let unit = i + 1; // 문자열을 자를 단위
        let count = 1; // 동일 글자가 몇 번 반복되는지
        let zippedStr = "";
        
      	// 하나의 단위에 대한 for문
        for(let j = 0; j < s.length; j=j+unit) {
            let curSub = s.substring(j, j+unit);
            let nextSub = s.substring(j+unit, j+unit+unit);
            
            if(curSub === nextSub) {
                count += 1;
            } else {
     		// curSub와 nextSub를 비교했던 것 중 반복되는 글자가 있는 경우
                if(count !== 1) {
                    zippedStr = zippedStr + count + curSub;
                } else { // 반복되는 글자가 없는 경우
                    zippedStr = zippedStr + curSub;
                }
                count = 1; // 비교 대상이 없는 경우
            }
        }
        arrForZippedStr.push(zippedStr.length);
    }
    answer = Math.min(...arrForZippedStr);
    return answer;
}

풀이 출처 : https://velog.io/@sso/프로그래머스-Javascript-문자열압축

📌 후기

풀어보다가 막혀서 구글링 후 여러 답안 중 가장 이해하기 쉬웠던 코드를 가져왔다

Math.floor(s.length/2) 만큼 for문을 돌리고
substring으로 동일한 단위로 나눠서 비교하는 코드를 짜다가................🤔

다른 분들의 풀이를 보니 일단 변수 설정이나 해결 단계를 짜는데에 있어 부족했고
하나의 단위에 대한 for문을 따로 돌려서 하나씩 확인해야 한다는 점을 깨달았다


오랜만에 코딩테스트 연습문제 풀어보는데 안한 만큼 감을 잃은 느낌이다 😭
다시 차근차근하면 나아지겠지...?

이전에는 공책에 손으로 쓰면서 연습문제 정리했는데
이제는 공책 + velog 에 같이 정리해보려 한다 😊

profile
Frontend Engineer & Value Creator

0개의 댓글