문제
문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다.
입력
인자 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() 메서드
는 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.
✔️${...}
: 템플릿 문자열, 기호를 사용하여 표현식을 넣으면 표현식이 문자열 안에서 계산된다