프로그래머스: 문자열 압축

공룡개발자·2022년 3월 25일
0
post-custom-banner

✍ 나의 풀이

function solution(s) {
    const answer = [];
    if(s.length === 1) return 1;
    for(let i = 1; i <= s.length/2; i++){
        let prev = s.substr(0,i);
        let count = 1;
        let str = '';
        
        for(let j = i; j < s.length; j += i){
            let cur = s.substr(j,i);
            if(prev === cur) count++;  
            else {
                str += (count > 1 ? count : '') + prev;
                count = 1;
                prev = cur;
            };
        };
        
      	str += (count > 1 ? count : '') + prev; 
        answer.push(str.length);
        str = '';
    };
    return Math.min(...answer);
};

✍ 풀이과정

  • 일단 매개변수 s의 길이가 1이라면 for문이 작동하지 않는다. 그래서 for문을 시작하기 전 길이가 1인 문자열에 대해서는 바로 return했다.
  • prev(이전값)라는 변수를 설정해 cur(현재값)변수와 비교해나가는 코드를 구성했다.
  • prev === cur이라면 카운트만 해주고, 지속되는 중복을 잡아내기위해 prev를 재할당하지 않았다.
  • prev !== cur이면 앞뒤 문자가 다르다는 것이고, 지속되는 중복이 끝났다는 의미이기도 해서 prev 앞에 count를 붙여 str변수에 할당해주었다.
  • 제일 마지막 cur은 for문 내에서 처리될 수 없기에, for문이 끝난 바로 다시 str += (count > 1 ? count : '') + prev 작성해 마지막 cur을 str에 반영했다.
profile
공룡의 발자취
post-custom-banner

0개의 댓글