eaz_coding

[Programmers] 문자열 압축(Python, Javascript) 본문

eaz_algorithm

[Programmers] 문자열 압축(Python, Javascript)

eaz_silver 2024. 6. 25. 16:39

문제

https://school.programmers.co.kr/learn/courses/30/lessons/60057

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


풀이

Python

def solution(s):
    n = len(s)
    answer = n
    
    for i in range(1, n//2+1):
        tmp, re = s, ''
        while len(tmp) > i:
            t, tmp = tmp[:i], tmp[i:]
            cnt = 1

            while tmp[:i] == t:
                cnt += 1
                tmp = tmp[i:]

            if cnt > 1:
                re += (str(cnt)+t)
            else:
                re += t

        re += tmp
        answer = min(answer, len(re))
        
    return answer

 

Javascript

function solution(s) {
    var answer = s.length;
    const n = s.length;
    
    for (let i=1; i < n/2+1; i++){
        let tmp = s;
        let re = "";
        
        while (tmp.length > i) {
            let t = tmp.slice(0, i);
            tmp = tmp.slice(i);
            let cnt = 1;
            while (tmp.slice(0, i) == t){
                cnt += 1;
                tmp = tmp.slice(i);
            }
            
            if (cnt > 1){
                re += cnt.toString();
            }
            re += t;
        }
        re += tmp;
        answer = answer > re.length ? re.length : answer; 
    }
    return answer;
}