[프로그래머스] [3차] 압축 (JS)

hhkim·2023년 9월 12일
0

Algorithm - JavaScript

목록 보기
131/188
post-thumbnail

풀이 과정

  1. 알파벳을 키, 인덱스를 값으로 하는 사전 객체 만들기
  2. 주어진 문자열의 각 문자에 대해 반복
  3. 현재 문자부터 끝까지 ~ 현재 문자까지 줄이면서 반복
  4. 일치하는 인덱스가 있으면 인덱스를 결과 배열에 추가하고 문자열에서 제거
    이때 일치하는 문자 다음 문자를 붙인 값을 사전에 추가

코드

function solution(msg) {
  const dict = {};
  [...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'].forEach((c, i) => (dict[c] = i + 1));

  let arr = [...msg];
  const result = [];
  while (arr.length) {
    for (let i = arr.length - 1; i >= 0; --i) {
      const str = arr.slice(0, i + 1).join('');
      const index = dict[str];
      if (index && i != arr.length - 1) {
        dict[str + arr[i + 1]] = Object.keys(dict).length + 1;
      }
      if (index) {
        result.push(index);
        arr = arr.slice(i + 1);
        break;
      }
    }
  }
  return result;
}

0개의 댓글