연속되는 문자 숫자 변환 및 문자 추가 Javascript

cptkuk91·2022년 8월 9일
1

Algorithm

목록 보기
52/161
post-custom-banner

문제

문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다.

주의사항

  • 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
  • 3개 이상 연속되는 문자만 압축합니다.

입출력 예시

let output = compressString('abc');
console.log(output); // --> abc

output = compressString('wwwggoppopppp');
console.log(output); // --> 3wggoppo4p

풀이

function solution(str) {
	let result = "";
    let count = 1;
    let before = str[0]; // 비교 대상
    
    // 마지막이 중복된 경우를 가정해 더미데이터를 추가해야한다.
    str = str + " ";
    for(let i = 1; i < str.length; i++){
    	if(before === str[i]){
        	count++;
        } else {
        	if(count >= 3){
            	result += `${count}${before}`
            } else {
            	result += before.repeat(count);
            }
            count = 1;
            before = str[i];
        }
    }
    return result;
}

연속되는 숫자를 기록하기 위한 선언 count, 비교값을 담아줄 before를 선언한다.
결과값은 result에 담아준다.

str = str + " "; 더미데이터를 추가해줘야 마지막 중복값이 있을 때 에러를 방지할 수 있다. 더미데이터 추가가 없는 경우 마지막에 중복된 값에 대해 확인이 불가능하다.

count >= 3 경우, count를 우선적으로 출력하고 문자를 추가해 result에 담아준다.
count 3미만의 경우, 비교값을 담아둔 before를 count 횟수만큼 repeat해 result에 추가한다.

result 결과값을 더한 경우에는 반드시 count = 1로 초기화 하고 비교값 대상을 str[i]로 설정해야 한다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)
post-custom-banner

0개의 댓글