문제
https://programmers.co.kr/learn/courses/30/lessons/60057
나의 코드
def solution(s):
answer=len(s)
for i in range(1,len(s)//2+1):
tmp=s #슬라이싱 해야되니 기존 s를 보호하기 위해 tmp선언
count=1 #몇번 반복됬는지 확인
tmp_str="" #압축한 뒤의 str, 길이확인에 필요
while len(tmp)>i: #슬라이싱 길이 만큼 남아있을 때까지 반복
tmp_slice=tmp[:i] #슬라이싱
tmp=tmp[i:]
if tmp_slice==tmp[:i]: #압축 가능?
count+=1
else: #압축불가
if count==1: #압축된 것이 없다면 그냥 붙이기
tmp_str+=tmp_slice
else: #압축된 것 있다면
tmp_str+=str(count)+tmp_slice#압축횟수도 기입
count=1
if count==1: #마지막 부분이 붙기전에 while문에 빠져나와서 추가
tmp_str+=tmp
else:
tmp_str+=str(count)+tmp
answer=min(answer,len(tmp_str))
return answer
단순 구현 문제, 다만 마지막 부분 while문에 빠져나오는 부분 처리가 필요한지 몰라서 찾는데 시간이 들었다.
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
다리를 지나는 트럭 (코딩테스트, 프로그래머스) (0) | 2022.01.27 |
---|---|
튜플 (코딩테스트, 프로그래머스) (0) | 2022.01.25 |
프린터 (코딩테스트, 프로그래머스) (0) | 2022.01.20 |
메뉴 리뉴얼 (코딩테스트, 프로그래머스) (0) | 2022.01.19 |
타겟 넘버 (코딩테스트, 프로그래머스) (0) | 2022.01.19 |
댓글