문자열 압축

김현민·2021년 9월 23일
0

Algorithm

목록 보기
89/126
post-thumbnail

function solution(s) {
  var answer = 0
  let half = Math.floor(s.length / 2)

  let arr = []

  let min = 100100
  for (let i = 1; i <= half; i++) {
    let str = s.substr(0, i)
    let cnt = 1

    for (let j = i; j <= s.length - i; j = j + i) {
      if (s.substr(j - i, i) === s.substr(j, i)) {
        cnt++
        if (s.length - j - i < i) {
          str += cnt
        }
      } else {
        if (cnt !== 1) {
          str += cnt
          str += s.substr(j, i)
        } else {
          str += s.substr(j, i)
        }
        cnt = 1
      }
    }
    str += s.substr(s.length - 1 - (s.length % i), s.length % i)
    arr.push(str)
  }

  for (let i = 0; i < arr.length; i++) {
    if (arr[i].length < min) {
      min = arr[i].length
    }
  }

  if (s.length === 1) min = 1

  answer = min
  // console.log("answer: ", answer)
  return answer
}

solution("aabbaccc")
console.log('solution("aabbaccc"): ', solution("aabbaccc"))
// solution("ababcdcdababcdcd")
// solution("abcabcdede")
// solution("abcabcabcabcdededededede")
// solution("xababcdcdababcdcd")
// console.log('solution("xababcdcdababcdcd"): ', solution("xababcdcdababcdcd"))
  1. 절반길이 범위까지만 구하고,
  2. substr을 이용해서 비교할 글자를 가져온다.
  3. 하나하나 비교하면서 같은 글자의 숫자를 str 변수에 붙인다.
profile
Jr. FE Dev

0개의 댓글