알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하세요. 단 반복횟수가 1인 경우 생략한다.
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘기지 않는다.
첫 줄에 문자열을 출력한다.
"KKHSSSSSSSE"
K2HS7E
어렵게 생각했지만 의외로 쉽게 해결할 수 있었다.
처음과 다음 문자열을 직접 비교 후 같다면 기준 변수를 +1한다.
다르다면 i번째 문자열을 빈 배열로 전달하고, 카운트 또한 배열로 전달해준다.
기준 변수가 1보다 크다면 중복이 되고 있다는 뜻임으로, 이것을 빈 배열의 인자로 전달해주고,
다시 기준 변수를 초기화해준다.
function solution(s) {
const answer = [];
const sArr = s.split('');
let count = 1;
for (let i = 0; i < sArr.length; i++) {
if (s[i] === s[i+1]) {
count++;
} else {
answer.push(s[i]);
if (count > 1) {
answer.push(count);
}
count = 1;
}
}
return answer.join('');
};
const s = "KKHSSSSSSSE"
console.log(solution(s));