[알고리즘] 문자열 압축

호두파파·2022년 1월 24일
0

알고리즘 연습

목록 보기
44/60


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

입력 설명

첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘기지 않는다.

출력 설명

첫 줄에 문자열을 출력한다.

입력예제

"KKHSSSSSSSE"

출력예제

K2HS7E


어렵게 생각했지만 의외로 쉽게 해결할 수 있었다.
처음과 다음 문자열을 직접 비교 후 같다면 기준 변수를 +1한다.
다르다면 i번째 문자열을 빈 배열로 전달하고, 카운트 또한 배열로 전달해준다.
기준 변수가 1보다 크다면 중복이 되고 있다는 뜻임으로, 이것을 빈 배열의 인자로 전달해주고,
다시 기준 변수를 초기화해준다.

function solution(s) {
  const answer = [];
  const sArr = s.split('');
  let count = 1;
  for (let i = 0; i < sArr.length; i++) {
    if (s[i] === s[i+1]) {
      count++;
    } else {
      answer.push(s[i]);
      if (count > 1) {
        answer.push(count);
      }
      count = 1;
    }
  }
  return answer.join('');
};

const s = "KKHSSSSSSSE"
console.log(solution(s));

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글