섹션2의 마지막 문제답게 어려웠다. 시간 안에 풀지 못해서 레퍼런스 코드를 보고나서 풀었다.
count
변수를 선언해주고 1을 할당한다.str[i] === str[i + 1]
) count
를 1증가 시킨다.3a
형태로 결과 문자에 담아준다.count
를 초기화한다. function compressString(str) {
let result = '';
let count = 1;
if (str.length === 0) {
return '';
}
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i + 1]) {
// 연속한 문자열인 경우
count++;
} else {
// 연속하지 않는 경우
// 반복된 횟수가 3이상일 경우에만 압축한다.
// 그렇지 않은 경우에는 문자만 할당하고
//카운트를 초기화한다.
if (count >= 3) {
result += count + str[i];
} else {
result += str[i].repeat(count);
}
count = 1;
}
}
return result;
}
마지막 비교의 경우에는 문자열의 마지막 요소와 undefined를 비교해서 else부분으로 넘어간다.