아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

런-렝스 부호화

면접 대비

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

요약
각 입력 줄을 런 렝스 인코딩한다. 같은 문자가 2개에서 9개 연속이면 개수와 문자로 나타내고, 9개를 넘으면 9개씩 나누며, 연속이 없는 구간은 1로 감싸고 그 안의 1은 두 번 쓴다.
난이도

보통10점 중 6점

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

문제

아래 규칙에 따라 간단한 형태의 런-렝스 부호화(run-length encoding)를 수행하는 프로그램을 작성하세요.

같은 문자가 2개부터 9개까지 연속으로 나타나는 구간은 두 글자로 부호화합니다. 첫 번째 글자는 구간의 길이로, 2부터 9까지의 숫자 중 하나로 나타냅니다. 두 번째 글자는 반복된 문자 자체입니다. 같은 문자가 9개를 넘게 연속으로 나타나면, 먼저 9개를 부호화한 뒤 남은 문자들을 같은 규칙으로 이어서 부호화합니다.

어떤 문자도 연속으로 반복되지 않는 구간은 1 한 글자로 시작하여 그 문자들을 그대로 나열하고, 다시 1 한 글자로 끝맺어 나타냅니다. 만약 그 구간 안에 1이 들어 있으면 1을 하나 더 붙여 이스케이프하므로, 1 두 글자가 출력됩니다.

입력

입력은 영문 대소문자, 숫자, 공백, 문장 부호로 이루어집니다. 모든 줄은 줄바꿈 문자로 끝나며, 그 밖의 문자는 입력에 나타나지 않습니다.

출력

입력의 각 줄을 위 규칙에 따라 따로따로 부호화합니다. 각 줄 끝의 줄바꿈 문자는 부호화하지 않고 그대로 출력에 전달합니다.

예제5

  1. 예제 1

    입력
    AAAAAABCCCC
    12344
    
    예상 출력
    6A1B14C
    11123124
    
  2. 예제 2

    입력
    A
    
    예상 출력
    1A1
    
  3. 예제 3

    입력
      A  
    
    예상 출력
    2 1A12 
    
  4. 예제 4

    입력
    a1b
    
    예상 출력
    1a11b1
    
  5. 예제 5

    입력
    AAAAAAAAAA
    
    예상 출력
    9A1A1