Programmers level2 문자열 압축

soominlee·2022년 8월 11일
0

🧄 Coding Test

목록 보기
8/9

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

이 문제는 구현문젠가..? 완탐인가..?

  • 반복문이 너무 많아서 효율적인 코드라고는 못하겠지만, 다른 사람들 시간, 공간복잡도 비교해봤을때 크게 다르진 않았음.
  • 문제 보고 for문으로 구성하는게 제일 먼저 생각났는데, for문이 너무 많아지면 안된다는 생각에 계속 다른 방법을 찾다가 결국 일단 구현했다. 다른 방법 삽질하다가 시간을 많이 버림.. lev2인데ㅎㅎ
import math 

def solution(s):
    answer = 0
    string_cnt = []
    for cut in range(len(s)):
        if cut == 0: sub = s
        else: sub = [s[cut*i:cut*(i+1)] for i in range(math.ceil(len(s)/cut))]
        new_str = []
        cmp_str = sub[0]
        cnt = 1
        for ss in sub[1:]:
            if cmp_str == ss:
                cnt += 1
                continue
            new_str.extend(['' if cnt==1 else str(cnt), cmp_str])
            cmp_str = ss
            cnt = 1
        new_str.extend(['' if cnt==1 else str(cnt), cmp_str])
        string_cnt.append(len(''.join(new_str)))
        
    return min(string_cnt)

profile
Soominlee

0개의 댓글