
😎풀이
chars 순회
1-1. 이전 문자와 다른 문자열이 나왔을 경우, 현재까지 연속된 문자열의 빈도와 문자를 결합시켜 추가
1-2. 동일 문자가 나왔을 경우 누적
- 원본배열인
chars를 직접 수정하여 변경된 압축형 문자열 적용
- 압축형 문자열의 길이 반환
function compress(chars: string[]): number {
let stack = [chars[0]]
let compressedStr = ''
for(let i = 1; i < chars.length; i++) {
const char = chars[i]
const stackLetter = stack[0]
if(char === stackLetter) {
stack.push(chars[i])
} else {
let joinedStack = stackLetter
if(stack.length > 1) {
joinedStack += stack.length
}
compressedStr += joinedStack
stack = [char]
}
}
if(stack.length) {
const stackLetter = stack[0]
let joinedStack = stackLetter
if(stack.length > 1) {
joinedStack += stack.length
}
compressedStr += joinedStack
}
chars.splice(0, chars.length, ...compressedStr);
return compressedStr.length
};