[프로그래머스] 문자열 압축 (JS)

hhkim·2023년 11월 17일
0

Algorithm - JavaScript

목록 보기
182/188
post-thumbnail

풀이 과정

  1. s 길이부터 1까지 감소하면서 반복
  2. s를 복사한 문자열이 빈 문자열이 될 때까지 반복
  3. 앞에서부터 i만큼 자른 문자열이 나오는 인덱스를 반복시킨 값의 인덱스가 0인지 검사: repeat(), indexOf()
  4. 3의 반복 횟수와 자른 문자열을 새로운 문자열에 붙이고, 원본 문자열은 잘라내기
  5. 문자열 길이의 최솟값 갱신

코드

function solution(s) {
  const len = s.length;
  let result = len;
  for (let i = len; i > 0; --i) {
    let copy = s;
    let tmp = '';
    while (copy) {
      let cnt = 1;
      const str = copy.slice(0, i);
      while (copy.indexOf(str.repeat(++cnt)) === 0);
      tmp += (--cnt === 1 ? '' : String(cnt)) + str;
      copy = copy.slice(i * cnt);
    }
    result = Math.min(result, tmp.length);
  }
  return result;
}

🦾

오늘도 한번에 통과 😁
별다른 알고리즘이 없어서 그냥 생각나는대로 풀면 되는 문제였다.

0개의 댓글