코딩테스트 문제풀이

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

lado 2021. 9. 12. 23:52

출처: 2020 KAKAO BLIND RECRUITMENT

 

그냥 거의 완전 탐색으로 확인하는 방식으로 구현했다.
검색하다가 파이썬 풀이를 봤는데 실행시간이 훨씬 짧아서 그 풀이를 공부해봐야겠다.

 

function solution(s) {
  let answer = 1001;
  let answerStr = "";
  let cnt = 1;
  let scope = 1;

  if (s.length === 1) return 1;

  while (scope <= s.length / 2) {
    for (let i = 0; i < s.length; i += scope) {
      if (s.substr(i, scope) === s.substr(i + scope, scope)) {
        cnt++;
      } else {
        answerStr += s.substr(i, scope);
        if (cnt !== 1) answerStr += cnt;
        cnt = 1;
      }
    }
    answerStr.length < answer ? (answer = answerStr.length) : answer;
    answerStr = "";
    cnt = 1;
    scope++;
  }

  return answer;
}

// 테스트 케이스
console.log(solution("aabbaccc")); // 7
console.log(solution("ababcdcdababcdcd")); // 9
console.log(solution("abcabcdede")); // 8
console.log(solution("abcabcabcabcdededededede")); // 14
console.log(solution("xababcdcdababcdcd")); // 17
console.log(solution("xxxxxxxxxxyyy")); // 5
console.log(solution("a")); // 1