[카카오] 2020 KAKAO BLIND RECRUITMENT 1차 풀이 – 문자열 압축

이 포스팅에서는 2020 카카오 블라인드 채용 1차 문제인 ‘문자열 압축’ 문제를 해설합니다. 본 풀이에 대한 테스트는 https://programmers.co.kr/learn/courses/30/lessons/60057에서 수행하였으며 공식 풀이와 일치하지 않을 수 있습니다.

공식 풀이는 링크를 참조하시기 바랍니다.


문자열 압축

출처 : 2020 KAKAO 블라인드 채용 온라인 1차
링크 : https://programmers.co.kr/learn/courses/30/lessons/60057
카테고리 : Backtracking
난이도 : 쉬움


문제 요약

문자열이 주어질 때 임의의 단위 N으로 압축하여 만들어지는 최소 길이 문자열의 길이를 리턴하여라. 압축 단위 N은 1 ~ 문자열의 길이가 가능하다.

예를 들어 abcabcddab를 길이 3으로 압축하면 abc abc dda b에서 abc가 2개, dda는 하나 그리고 b가 하나이므로 2abcddab로 길이는 8이 된다.


문제 풀이

  • 초기의 정답은 압축하지 않은 상태의 길이인 len(text)로 둔다.
  • 압축 단위가 len(text)의 절반보다 클 때는 압축한 결과가 무조건 원래 길이보다 크기 때문에 수행할 필요가 없다. 따라서 [1, len(text) // 2] 구간의 압축 단위에 대해서만 압축을 수행한다.
  • 가능한 압축 단위에 대해 아래를 반복한다.
    • 누적 길이를 0으로 초기화한다.
    • 초기 인덱스 idx = 0으로 설정하고, idx < len(text)인 조건에서 아래를 반복한다
      • text의 idx 위치에서 압축 단위만큼 문자열을 자른다. 만약 남은 길이가 모자라면 모자란 만큼만 잘라 token에 저장한다.
      • token이 text에서 몇 번이나 반복되는지 센다.
      • token의 길이를 누적 길이에 더한다.
      • 반복 횟수가 1보다 크면 압축할 필요가 있으므로 반복 횟수의 길이도 누적 길이에 더한다.
    • 누적 길이가 현재 정답보다 작은 값이면 현재 정답을 갱신한다.
  • 정답을 리턴한다.

정답 코드

def solution(s):
min_len = len(s)
for i in range(1, len(s) // 2 + 1):
length = 0
prev = “”
idx = 0
while idx < len(s):
token = s[idx:min(idx+i, len(s))]
idx += len(token)
cnt = 1
length += len(token)
while idx + i <= len(s) and token == s[idx:idx + i]:
idx += i
cnt += 1
if cnt > 1:
length += len(str(cnt))
if length < min_len:
min_len = length
return min_len
cs

Competition 카카오 블라인드 채용 문자열 압축

admin

Recent Posts

2025년 10월 12일 일요일 – 서울 생활 176주차

AI AI Agent들이 어느 정도 유용한 건 맞지만, 생각보다 성능이 그렇게 시원찮은지는 모르겠다. 특히나 코드…

2개월 ago

2025년 9월 21일 일요일 – 서울 생활 173주차

중간 점검 시간이 얼마나 빠른지 여름이 훌쩍 지나 3분기는 이제 겨우 한 주가 남아, 올해의…

3개월 ago

2025년 9월 7일 일요일 – 서울 생활 171주차

금주 금주를 시작해보기로 했다. 이미 술을 먹기로 하고 잡은 2개의 회식들은 예외로 하고, 나머지 자리에서는…

3개월 ago

2025년 8월 31일 일요일 – 서울 생활 170주차

티앤미미 예약이 그렇게 힘들다는 티앤미미를 처남네가 운좋게 예약해서 어제 저녁 다녀왔다. 딤섬이 그렇게 맛있다고 하는데,…

3개월 ago

2025년 8월 17일 일요일 – 서울 생활 168주차

아난티 부산 시설과 고객 서비스가 이렇게 극단적으로 다른 방향인 호텔이 있을까 싶다. 시설의 퀄리티는 5성급이라기에…

4개월 ago

2025년 8월 3일 일요일 – 서울 생활 166주차

스트레스 관리 ENTJ 성격 특인지는 몰라도, 나는 계획했던 일에 변수가 생기면 그 순간 큰 스트레스를…

4개월 ago

This website uses cookies.