휴대폰 문자 압축

면접 대비

시간 제한1초메모리 제한512 MB

요약
각 문자열마다 같은 문자가 연속된 구간을 개수와 문자 쌍으로 바꿔 run-length encoding 형식으로 출력한다.
난이도

쉬움10점 중 3점

유형
문자열, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

새 휴대폰 요금제는 문자를 보낼 때 글자마다 요금을 부과한다. 기호가 연속으로 나열된 메시지를 자주 보내기 때문에, 다음과 같은 압축 기법을 고안했다. 각 기호마다 그 기호가 연속으로 나타난 횟수를 적고, 그 뒤에 기호 자체를 적는다. 이 압축 기법을 런 렝스 인코딩이라고 한다.

더 엄밀히 말하면, 블록은 같은 기호로만 이루어진, 더 이상 늘릴 수 없는 부분 문자열이다. 블록은 압축된 형태로 블록의 길이와 그 블록의 기호를 이어서 나타낸다. 문자열의 인코딩은 문자열에 있는 각 블록을 문자열에 나타난 순서대로 나타낸 것이다.

문자열이 주어지면 이 형식으로 인코딩하는 프로그램을 작성하시오.

입력

첫째 줄에는 뒤따르는 줄의 수 N이 주어진다. 다음 N개 줄에는 각각 1개 이상 80개 이하의 문자가 들어 있으며, 공백은 없다.

출력

N개 줄을 출력한다. 출력의 i번째 줄은 입력의 i+1번째 줄을 인코딩한 것이다. 한 줄의 인코딩은 쌍들을 공백으로 구분한 나열이며, 각 쌍은 정수(문자가 연속으로 나타난 횟수), 공백, 문자 순서로 이루어진다.

예제1

  1. 예제 1

    입력
    4
    +++===!!!!
    777777......TTTTTTTTTTTT
    (AABBC)
    3.1415555
    
    예상 출력
    3 + 3 = 4 !
    6 7 6 . 12 T
    1 ( 2 A 2 B 1 C 1 )
    1 3 1 . 1 1 1 4 1 1 4 5