← 학습 코스

반복 문자를 묶어서 표시해요

C++완성형

같은 문자가 붙은 범위를 한 묶음으로 읽어요

앞 레슨에서 이웃 문자가 같은지 비교했어요. 이번에는 같은 문자가 이어지는 범위를 묶어요. 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: 연속한 문자 묶음의 시작과 끝 경계를 읽어요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기