코딩테스트
문자열 압축
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
📌참고
이것이 취업을 위한 코딩 테스트다 with 파이썬
IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년
www.google.com