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

dongwon·2021년 5월 2일
0

프로그래머스-Level 2

목록 보기
17/33

문제

문자열 압축 https://programmers.co.kr/learn/courses/30/lessons/60057

해결

  1. 문자열 자르기 slice 메서드 사용
  2. 숫자도 길이를 세야하기 때문에 Set 을 이용하여 중복을 제거해버리면 숫자를 셀 수 없습니다. slice된 문자열을 이용해 완전탐색으로 해결했습니다.

코드

function solution(s) {
  const max_cut_num = s.length / 2;
  const str_len = s.length;
  let answer = s.length;

  for (let i = 1; i <= max_cut_num; i++) {
    let cut_str = s.slice(0, i);
    let count = 1;
    let temp_str = "";

    for (let j = i; j <= str_len; j = j + i) {
      let next_cut_str = s.slice(j, j + i);

      // string 바로 비교 가능 했나? 가능하네...
      if (cut_str === next_cut_str) {
        count++;
      } else {
        temp_str += count > 1 ? `${count}` + cut_str : cut_str;
        cut_str = next_cut_str;
        count = 1;
      }
    }

    // 나머지 처리
    if (cut_str) temp_str += cut_str;

    if (answer > temp_str.length) answer = temp_str.length;
  }

  return answer;
}
profile
데이원컴퍼니 프론트엔드 개발자입니다.

0개의 댓글