본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[기출 중] 문자열 압축

[문제]

0과 1만 등장하는 문자열에 대해서 연속되는 0의 개수와 1의 개수를 알파벳과 매칭시켜 압축하자. 시작이 1일 경우에는 1을 앞에 붙여준다.

예를 들어 000011110은 0이 4번, 1이 4번, 0이 한번 나오므로 DDA이다. 1100011111은 1로 시작하고, 1이 2번, 0이 3번, 1이 5번 연속되므로 1BCE이다. 

 

[코드]

string solution(string s){
	string answer = "";
	int cnt = 0;
	if(s[0]=='1'){
			answer += '1';
		}
	for(int i=1; i<=s.length(); i++){
		if(s[i] == s[i-1])
			cnt++;
		else{
			answer += (char)(cnt + 65);
			cnt = 0;
		}
	}
	return answer;
}