같은 문자가 붙은 범위를 한 묶음으로 읽어요
앞 레슨에서 이웃 문자가 같은지 비교했어요. 이번에는 같은 문자가 이어지는 범위를 묶어요. aaabb에는 a 세 개와 b 두 개의 묶음이 있어요. 같은 a라도 사이에 다른 문자가 있으면 다른 묶음이에요.
시작 인덱스 start와 처음 다른 문자가 나온 인덱스 end를 정하면 묶음 길이는 end−start예요. end는 묶음에 포함하지 않는 경계예요.
문자와 숫자 표기를 따로 붙여요
string result;는 빈 문자열을 만들어요. result += 'a';는 문자 a를 붙이고, result += to_string(3);은 정수 3의 문자열 표기를 붙여요. 두 문장 뒤 result는 a3이에요.
| 묶음 | 시작 | 끝 경계 | 길이 |
|---|---|---|---|
| aaa | 0 | 3 | 3 |
| bb | 3 | 5 | 2 |
이후에는 end에서 다음 묶음을 시작해요. 마지막 묶음 뒤에 다른 문자가 없어도 길이를 기록해야 해요. zz를 한 묶음으로 표시하면? z와 길이 2를 붙인 z2예요.
직접 풀어봐요
text에서 연속한 같은 문자들을 묶고, 각 묶음을 문자+길이로 바꿔 이어 붙인 문자열을 반환해요. 길이가 1이어도 숫자 1을 붙여요. 길이는 십진수로 표시하고 앞에 불필요한 0을 붙이지 않아요.
text는 az 소문자로만 이루어져 있고 길이는 1100이에요. 실행용 입력은 text 한 줄, 출력은 반환 문자열이에요. 하네스가 입출력을 처리해요.
예시 1: text="aabccc" → a2b1c3. a 두 개·b 한 개·c 세 개를 순서대로 써요.
예시 2: text="abbaa" → a1b2a2. 앞 a와 뒤 aa는 서로 다른 묶음이에요.
예시 입력
aabccc
예상 결과
a2b1c3
예시 입력
abbaa
예상 결과
a1b2a2
핵심 개념
stl-string: 연속한 문자 묶음의 시작과 끝 경계를 읽어요.