문자열 압축

bkboy·2022년 5월 17일
0

문제

알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는
문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시
오. 단 반복횟수가 1인 경우 생략합니다.

제한사항

입출력 예

풀이

function solution(s) {
  let answer = new Map();
  for (let x of s) {
    if (answer.has(x)) {
      answer.set(x, answer.get(x) + 1);
    } else {
      answer.set(x, 1);
    }
  }

  let newAnswer = '';

  for (let [key, values] of answer.entries()) {
    newAnswer += key;
    newAnswer += values;
  }
  newAnswer = newAnswer.replace(/[1]/g, '');

  return newAnswer;
}

let str = 'KKHSSSSSSSE';
console.log(solution(str));
  • 요런 느낌(?)의 문제는 Map자료구조가 찰떡이다.
  • map에 key value로 각각 단어와 갯수를 넣고 entries를 이용해서 조건에 맞게 문자열에 넣는다.
  • 1은 제거하라고해서 replace를 이용해서 했지만 뭐 여러가지 방법이 있다.
profile
음악하는 개발자

0개의 댓글