알고리즘

[JS] 알고리즘 기초 정복 3-5번_문자열 압축

햄❤️ 2021. 7. 15. 19:44
반응형

문제 3-5번

알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시 오. 단 반복횟수가 1인 경우 생략합니다.

 

🍄 입력설명

첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.

 

🍄 출력설명

첫 줄에 압축된 문자열을 출력한다.

 

🍄 입력예제 1

KKHSSSSSSSE

 

🍄 출력예제 1

K2HS7E

 


정답 코드

 - s[i] === s[i+1] 일때, count를 1씩 증가한다. 계속 증가하다가, 달라질 때 answer에 알파벳을 넣는다. 그리고 count가 1일때가 아닌 경우에만 count를 그 옆에  추가하고 count를 다시 1로 리셋한다.( count가 초기에 0이 아니라 1부터 시작하는것이 중요하다)
   마지막 문자열의 경우 비교대상이 없으니, 맨 끝에 빈 문자열을 넣어준다. for문에서는 맨 마지막 문자를 비교할 필요가 없어 length에서 1을 빼준다.  

function solution(s) {
	let answer = "";
	let count = 1;
	s = s + " ";
	for (let i = 0; i < s.length - 1; i++) {
		if (s[i] === s[i + 1]) count++;
		else {
			answer += s[i];
			if (count > 1) answer += String(count);
			count = 1;
		}
	}
	return answer;
}

let str = "KKHSSSSSSSE";
console.log(solution(str));
//출력 K2HS7E

 

728x90
반응형