문자열 압축

Polla·2023년 2월 28일
0

programmers

목록 보기
52/58
post-thumbnail

프로그래머스 lv2 , 2020 KAKAO BLIND RECRUITMENT
문자열 압축 파이썬



💡 문제


압축할 문자열 s가 매개변수로 주어질 때, 위에 설명한 방법으로
1개 이상 단위로 문자열을 잘라 압축하여 표현한 문자열 중 
가장 짧은 것의 길이를 return 하도록 solution 함수를 완성해주세요.


🥳 해결


생각

1. dict 을 사용하거나 리스트로 구현해볼까
2. 숫자의 자릿수를 어떻게 뽑아올까
3. 가상의 dict 혹은 list에 저장 후 len() 가져오기


코드


def solution(s):
    result = []
    for i in range(1, len(s)//2+2):
        answer = ''
        sam = s[:i]
        cnt = 1
        for j in range(i, len(s)+i, i):
            if sam == s[j:j+i]: # 만약 현재가 전과 같다면
                cnt += 1
            else:
                if cnt == 1:
                    answer += sam
                else:
                    answer += str(cnt) + sam
                sam = s[j:j+i]
                cnt = 1
        result.append(len(answer))

    return min(result)

우선 dict()로 풀기는 어려웠다.. 접근을 잘못해서, 생각이 많이 꼬였다.
결국 dict() 로 푸는 분들도 없길래 처음부터 리스트로 다시 작성했다...

sam = s[:i] 를 통해 시작 단계를 지정해주고, cnt 를 통해
1씩 늘려줬다.

그 후 숫자는 바로 answerstr() 형식으로 바꾸고 넣어 준 후에
계산을 진행해줬다.



오늘의 반성


사실 문제 자체는 어렵지 않았다. (물론 정답률 30프로 긴함)
해결 방법도 어렵지 않았는데, 너무 복잡하게 돌아가는 경향이 있는듯...
아무래도 runtime이나 내가 좀 더 쓰기 편한 코드를 작성하고 싶은 욕심이 문제..
좀 더 쉽게 접근해도 괜찮다고 무한 for문 해도 괜찮다고 스스로를 다독여주자... 🥲
profile
트러블 슈팅 Blog => https://polla.palms.blog/home

0개의 댓글