프로그래머스 | 문자열 압축_JS

난이도 : Level. 2
언어 : Javascript
출제 내역 : 2020 KAKAO BLIND RECRUITMENT

❓ Question

문자를 압축해 표현 한 것중 가장 짧은 문자열의 길이는?

📝 My Solution

전체 풀이 코드 👈🏻 클릭시 Github로 이동

function chunkString(str, length) {
    return str.match(new RegExp('.{1,' + length + '}', 'g'));
}

문자열 압축에서의 핵심은 이 코드가 아닐까 싶습니다.
조건에 따라서 해당 문자열을 나눠주는 코드인데,
참고한 블로그는 아래 남기도록 하겠습니다.

function solution(s) {
  let newArr = [];
  const lengthArr = [];
    for (let i = 0; i<s.length; i++) {
      let result = [];
      newArr = chunkString(s, i+1)
      let count = 1;

우선 문자열을 개수대로 나눠줄 배열과,
조건을 만족한 문자열의 길이를 담을 배열을 만들고,
문자열을 나눠주는 반복문을 생성합니다.

for (let l = 0; l<newArr.length; l++) {
  let stand = newArr[l];
  if (stand === newArr[l+1]) {
    count++
  } else {
    if (count === 1) {
      result.push(stand);
      stand = newArr[l+1]
    } else {
      result.push(count);
      result.push(stand);
      count = 1;
      stand = newArr[l+1]
    }
  }

다음 반복문으로는 나눠진 문자끼리 비교합니다.
기준 문자를 잡고, 다음 문자와 비교해서 같으면 count 값을 올리고,
아니라면 count 값을 앞으로 두고, 해당 문자를 뒤에 넣어서 배열에 집어 넣습니다.

단, count가 1이라면 문자만 집어 넣습니다.

    }
    lengthArr.push(result.join("").length)
    result = [];
  }
  return Math.min(...lengthArr)
}

그렇게 진행 한 뒤, 결과로 나온 문자열을 전부 합해 그 문자열의 길이를
길이 배열에 넣어줍니다.

모든 반복문이 완료되면, 길이 배열 중 가장 작은 값을 도출해 냅니다.

결과


참고 블로그

좋은 웹페이지 즐겨찾기