알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오. 단 반복횟수가 1인 경우 생략합니다.
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
첫 줄에 압축된 문자열을 출력한다.
▣ 입력예제 1
▣ 출력예제 1
function solution(str) {
let answer = "";
// 중복 숫자를 카운팅 해줄 변수 count를 생성. 1부터 카운팅.
let count = 1;
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i + 1]) {
count++;
answer += `${str[i]}${count}`;
} else {
count = 1;
answer += str[i];
}
}
return answer;
}
let str = "KKHSSSSSSSE";
console.log(solution(str));
function solution(str) {
let answer = "";
let count = 1;
str = str + " ";
for (let i = 0; i < str.length - 1; i++) {
if (str[i] === str[i + 1]) {
count++;
} else {
answer += str[i];
if (count > 1) answer += String(count);
count = 1;
}
}
return answer;
}
let str = "KKHSSSSSSSE";
console.log(solution(str));
function solution(str) {
// 0. 중복 숫자를 카운팅 해줄 변수 count를 생성. 1부터 카운팅.
let answer = "";
// 1. 마지막 요소의 +1 인덱스 비교를 위해 str 끝에 " " 띄어쓰기 문자열 추가
let count = 1;
str = str + " ";
// 2 for 반복문을 문자열 srt의 길이에 -1를 한만큼 돌아서
for (let i = 0; i < str.length - 1; i++) {
// 2.1 띄어쓰기 " "를 처리해야 하기 때문에 str.length에 -1
// 3. 만약, str[i]이 str[i + 1]과 똑같다면
if (str[i] === str[i + 1]) {
// 4. count를 더해준다.
count++;
} else {
// 5. 만약, str[i]이 str[i + 1]과 다르다면
// 6. answer에 str[i] 값을 누적한다.
answer += str[i];
// 7. 만약 count가 1보다 크다면 answer에 count 숫자를 누적한다.
if (count > 1) answer += String(count); // 7.1 문자열로 변환하여 answer에 누적
// 8. count를 초기화 한다.
count = 1;
}
}
// 9. 누적한 값을 담은 answer를 반환한다.
return answer;
}
let str = "KKHSSSSSSSE";
console.log(solution(str));