티스토리 뷰

코딩테스트

문자열 압축

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

 

 

'코딩테스트' 카테고리의 다른 글

  (2) 2024.11.28
자물쇠와 열쇠  (0) 2024.11.27
문자열 재정렬  (0) 2024.11.25
럭키 스트레이트  (0) 2024.11.23
무지의 먹방 라이브  (0) 2024.11.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함