Algorithm/EPPER

[EPPER] 15회 5번 문자열 압축

하얀콩토리 2021. 3. 5. 01:34

▷ EPPER은 이화여자대학교 소프트웨어학부 졸업시험인 코딩테스트 이름입니다.

EPPER 15회 5번 문제 문자열 압축

문제 설명

문자열을 압축하는 문제인데 예를 들어 첫문자가 0으로 시작하는 00011110의 경우, CDA로 표기하여 저장 공간을 줄일 수 있는데 C는 0이 3개(알파벳에서 3번째) 연속으로 등장하였다는 의미고 D는 1이 4개(알파벳에서 4번째), A는 0이 1개 연속해서 등장했다는 의미다.

만약 비트열이 1로 시작하는 경우 저장 공간의 제일 앞에 1을 붙여 혼돈을 방지한다.
예를 들어 110100의 경우 1BAAB로 표시한다.

이 문자열 압축 알고리즘을 구현하는 함수를 구해라

 

제한 사항

  • 입력으로 주어지는 문자열의 길이는 1 이상 10000 이하
  • 입력으로 주어지는 문자열에는 "0"과 "1" 외의 문자는 등장하지 않음을 가정
  • 동일한 문자가 27회 이상 연달아 등장하는 경우는 없음

예시

입력 : 00000000111111111111111111111111110000000000000000
출력 : HZP

 

입력 : 00000000000000000000010000000011111111111111000000
출력 : UAHNF

 

코드

def solution(ex):
    answer = ""
    t = ex[0]
    cnt = 0

    if t == "1":
        answer += "1"

    for i, s in enumerate(ex):
        alp = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

        if s == t:
            cnt+=1
        else:
            answer += alp[cnt-1]
            cnt = 1
            t = ex[i]
    answer += alp[cnt-1]

    return answer