Run-Length Encoding, Run!

면접 대비

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

요약
문자열을 런 길이 문자 쌍으로 압축하거나 그 쌍을 원래 문자열로 복원합니다.
난이도

쉬움10점 중 2점

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

문제

Forrest는 "전화 접속 인터넷" 시대에 살고 있다. 빠른 스트리밍이 가능한 오늘날의 광대역과 달리, 전화 접속 연결은 적은 양의 텍스트 데이터만 합리적인 속도로 전송할 수 있다. Forrest는 자신의 통신 내용에 반복되는 문자가 자주 등장한다는 점을 알아차리고, 반복 정보를 바탕으로 한 간단한 압축 방식을 고안했다. 텍스트 데이터는 전송을 위해 인코딩되어 훨씬 짧은 문자열이 될 수도 있고, 전송 후 디코딩되어 원래 데이터를 복원한다.

압축 방식은 아주 단순하다. 텍스트 문자열을 인코딩할 때 연속으로 반복되는 문자는 그 문자 하나와 그 문자의 등장 횟수(문자의 런 길이)로 바뀐다. 인코딩된 문자열을 디코딩하면 각 문자를 런 길이만큼 반복해 원래 문자열을 얻는다. Forrest는 이 인코딩 방식을 런 길이 인코딩이라고 부른다. (그가 실제로 이 방식을 처음 발명한 사람이라고는 생각하지 않지만, 그에게는 아직 말하지 않았다.)

예를 들어 문자열 HHHeelllo는 H3e2l3o1로 인코딩된다. H3e2l3o1을 디코딩하면 원래 문자열이 나온다. Forrest는 당신에게 그의 런 길이 인코딩 알고리즘을 구현해 달라고 의뢰했다.

입력

입력은 한 줄의 텍스트로 이루어진다. 줄은 하나의 문자로 시작한다. E는 인코딩, D는 디코딩을 뜻한다. 이 문자 뒤에는 공백 하나가 오고, 그 뒤에 메시지가 온다. 메시지는 1자 이상 100자 이하다.

인코딩할 각 문자열은 영문 대소문자, 밑줄, 마침표, 느낌표만 포함한다. 연속으로 반복되는 문자의 개수는 9를 넘지 않는다.

디코딩할 각 문자열의 길이는 짝수다. 그 문자들은 인코딩할 문자열에 쓰이는 문자와 1에서 9 사이의 한 자리 숫자가 번갈아 나타나며, 숫자는 바로 앞 문자의 런 길이를 나타낸다.

출력

입력이 E이면 주어진 메시지의 런 길이 인코딩을 출력한다. 입력이 D이면 주어진 런 길이 인코딩에 대응하는 원래 문자열을 출력한다.

예제2

  1. 예제 1

    입력
    E HHHeellloWooorrrrlld!!
    
    예상 출력
    H3e2l3o1W1o3r4l2d1!2
    
  2. 예제 2

    입력
    D H3e2l3o1W1o3r4l2d1!2
    
    예상 출력
    HHHeellloWooorrrrlld!!