코딩테스트/카카오 기출

카카오 2020기출 문자열 압축 코드, 해설 (파이썬) LV2 구현문제

RyanKwon 2022. 1. 12. 20:00
728x90

문제 코드 전체가 궁금한 분은 깃허브 링크 눌러주세요

 

GitHub - Rhyankwon/algorithms

Contribute to Rhyankwon/algorithms development by creating an account on GitHub.

github.com

 

설명 ㄱㄱ

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

 

가령 aabbaccc 가 있다면 2a2ba3c 이런 식으로 나타낼 수 있다. 

 

 

-풀이-

...그냥 하면 되는데? 앞쪽부터 잘라서 인덱스를 옮겨주며 뒷쪽과 조금씩 비교하면 된다. 아래에 코드가 있으니,,보시길

처음에 엄청 어렵다고 생각했는데.. 다시 보니까 그냥 앞에서부터 순서대로 길이별로 자르면 되는 문제였다. ㅡㅡㅋㅋ dfs짜고있었네..... 20~30분?정도 걸린듯.

 

    while tmp <= len(string): #위치 변경하기
        cnt = 1
        sub_string = string[tmp:tmp+i]
        for j in range(1, len(string)): #비교
            if len(string[tmp+j*i:tmp+(j+1)*i]) >= i and string[tmp+j*i:tmp+(j+1)*i] == sub_string:
                cnt+=1
            else:
                break
        if cnt == 1: #반복 없는 경우 문자열 그대로 붙이기
            new_s += sub_string
        else :
            new_s += str(cnt) + sub_string
        tmp += j*i
    new_s += string[tmp:] #남은 부분 더하기

이 부분이 메인 코드. 위치 변경, 끝쪽 길이 확인 등등까지. 확실히 Lv3 풀다가 Lv2 푸니까 훠얼씬 풀만하다.

 

728x90