문자열을 입력받고, 같은 문자가 반복되는 경우 숫자를 표현하여 나타내어라.
(단, 반복횟수가 1인 경우 숫자 생략)
예시)
입력 : KKHSSSSSSSE
출력 : K2HS7E
<script>
function solution(s){
let temp =s[0], count =1;
let answer='';
for(let i=1; i<s.length;i++){
if(s[i]===temp){
count++;
}else{
if(count ===1){
answer += temp;
temp =s[i];
}else{
answer +=temp+String(count);
temp = s[i];
count = 1;
}
}
}
if(count ===1){
answer += temp;
}else{
answer +=temp+String(count);
}
return answer;
}
console.log(solution('KKHSSSSSSSE'));
</script>
count : 현재 문자를 조우한 횟수를 따로 저장
temp : 현재 문자를 저장. 다음 문자와의 비교를 위함
초깃값 : 첫번째 문자를 temp에, 반복횟수 1을 count에 저장
반복문 1 : 두번째 문자부터 끝까지 탐색
조건문 1 : 이전의 문자(temp)와 현재 문자(s[i])가 같다면
조건문 1-2 : 현재 반복횟수가 1이라면
조건문 2 : 현재 반복횟수가 1이라면(마지막 문자를 넣기 위함)
<script>
function solution2(s){
let answer ='';
let cnt = 1;
let temp = s +" ";
for(let i=0; i<temp.length-1;i++){
if(temp[i]===temp[i+1]) cnt++;
else{
answer +=temp[i];
if(cnt>1)answer+=String(cnt);
cnt =1;
}
}
return answer;
}
console.log(solution2('KKHSSSSSSSE'));
</script>
현재 문자와 다음 문자를 비교해서 같다면 cnt 증가
다르다면 결과값에 문자를 더해주는 방법