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

다돔잉·2020년 10월 24일
0

문제

"aabbaccc" -> 2a2ba3c -> 7이 제일 짧음
제일 짧은 문자열의 길이 반환

코드

function solution(s) {
    var answer = 0;

    let unit = 0;
    let min = 100000;

    while(unit<=s.length){
      unit++;
      let split = [];

      for(let i=0; i<s.length; i+=unit){
          split.push(s.substr(i, unit));
      }

      let unitLen = findLen(split);
      if(unitLen < min){
        min = unitLen;
      }
    }


    return min;
}

function findLen(split){
    let compression = '';
    let count = 1;

    while(split.length > 0){
        if(split[0] === split[1]){
            count++;
            split.shift();
        } else {
            if(count > 1){
                compression += count;
                count = 1;
            }
            compression += split.shift();
        }
    }
    return compression.length;
}

후기

  • 체감난이도 ★★
  • O(n³) -> 효율성은 별로 안좋을 것 같음
  • 1~n까지 압축하며 가장 짧은 문자열의 길이를 반환함

방법

  1. 1~n단위로 잘라 배열로 만듦
  2. 만들어진 배열을 findLen(문자열을 압축하는 함수)로 보냄
  3. split[0]과 split[1]을 비교하여 같으면 count++, 다르면 compression에 붙임
profile
안녕

0개의 댓글

관련 채용 정보