문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다.
- 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
- 3개 이상 연속되는 문자만 압축합니다.
let output = compressString('abc');
console.log(output); // --> abc
output = compressString('wwwggoppopppp');
console.log(output); // --> 3wggoppo4p
function solution(str) {
let result = "";
let count = 1;
let before = str[0]; // 비교 대상
// 마지막이 중복된 경우를 가정해 더미데이터를 추가해야한다.
str = str + " ";
for(let i = 1; i < str.length; i++){
if(before === str[i]){
count++;
} else {
if(count >= 3){
result += `${count}${before}`
} else {
result += before.repeat(count);
}
count = 1;
before = str[i];
}
}
return result;
}
연속되는 숫자를 기록하기 위한 선언 count, 비교값을 담아줄 before를 선언한다.
결과값은 result에 담아준다.
str = str + " "; 더미데이터를 추가해줘야 마지막 중복값이 있을 때 에러를 방지할 수 있다. 더미데이터 추가가 없는 경우 마지막에 중복된 값에 대해 확인이 불가능하다.
count >= 3 경우, count를 우선적으로 출력하고 문자를 추가해 result에 담아준다.
count 3미만의 경우, 비교값을 담아둔 before를 count 횟수만큼 repeat해 result에 추가한다.
result 결과값을 더한 경우에는 반드시 count = 1로 초기화 하고 비교값 대상을 str[i]로 설정해야 한다.