[Daily Coding]_compressString

fejigu·2022년 8월 17일
1

알고리즘 & 자료구조

목록 보기
20/24


문제

문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다.

입력

인자 1 : str
string 타입의 알파벳 문자열

출력

string 타입을 리턴해야 합니다.

주의 사항

빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
3개 이상 연속되는 문자만 압축합니다.

입출력 예시

let output = compressString('abc');
console.log(output); // --> abc
output = compressString('wwwggoppopppp');
console.log(output); // --> 3wggoppo4p

💻 코드 작성

function compressString(str) {
  // 연속되는 문자를 기록하기 위한 변수
  // 첫 번째 문자로 초기화
  let before = str[0];
  // 동일한 문자의 반복 횟수
  let count = 1;
  // 정답으로 리턴할 문자열
  let result = '';
  // 마지막 부분이 연속된 문자일 경우를 위해 dummy 문자 추가
  str = str + ' ';
  //-------------여기까지 변수 선언-----------------------
  for (let i = 1; i < str.length; i++) {
    // 동일한 문자가 반복될 경우
    if (before === str[i]) {
      count++;
    } else {
      // 이전과 다른 문자일 경우,
      // 반복된 횟수가 3 이상일 경우에만 압축을 한다.
      if (count >= 3) {
        result = result + `${count}${before}`;
      } else {
        result = result + before.repeat(count);
      }
      before = str[i];
      count = 1;
    }
  }
  return result;
}

📍회고

각각 단계를 수도 코드로 작성하고, 변수를 선언하는 것이 어려웠다.
결국 레퍼런스의 도움을 받아 코드를 작성하고 하나씩 확인하였다.

✔️repeat() 메서드는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.
✔️${...} : 템플릿 문자열, 기호를 사용하여 표현식을 넣으면 표현식이 문자열 안에서 계산된다

profile
console.log(frontendjigu( ☕️, 📱); // true

0개의 댓글