코딩테스트

문자열 압축

ajaa 2024. 11. 26. 10:17

📌문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

📌풀이

길이가 N인 문자열 입력되었다면 1부터 N/2까지의 모든 수를 단위로 하여 문자열을 압축하는 방법을 모두 확인하고 가장 짧게 압축되는 길이 출력

 

📌코드

def solution(s):
    answer = len(s)
    #1개 단위부터 압축 단위를 늘려가며 확인
    for step in range(1, len(s)//2+1):
        compressed=""
        prev=s[0:step] #앞에서부터 step만큼 추출
        count=1 #압축 횟수
        #단위 크기만큼 증가시키며 이전 문자열과 비교
        for j in range(step, len(s), step):
            #이전 문자열과 동일하다면 압축 횟수 증가
            if prev==s[j:j+step]:
                count+=1
            #문자열이 다르다면
            else:
                compressed+=str(count)+prev if count>=2 else prev
                prev=s[j:j+step] #상태 초기화
                count=1
        #남아있는 문자열에 대한 처리
        compressed +=str(count)+prev if count>=2 else prev
        #만들어지는 압축 문자열이 가장 짧은 것이 정답
        answer=min(answer, len(compressed))
            
    return answer

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com