728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/60057
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
LV2
문제이해
문자를 일정 단위로 압축할 수 있다.
최대로 압축하는 한 경우의 문자열 길이를 찾아내기.
풀이법
파이썬의 리스트 슬라이싱을 활용해 문자열을 잘라내 압축 문자열을 만든다.
현재 문자열과 이전 문자열이 같다면 압축 성공
다른 경우에 한번도 압축이 되지않는다면 그대로 표시, 압축이 두번이상 되었다면 압축해서 표시해준다.
arr에 현재 i만큼 자르면서 만든 압축 문자열의 길이를 저장한다.
가장 짧은 길이를 반환한다.
코드
def solution(s):
arr =[]
if len(s) == 1:
return 1
for i in range(1, len(s)+1):
b = ''
cnt = 1
tmp=s[:i]
# 현재 문자열을 i 만큼 자르면서 압축 문자열 만들기
for j in range(i, len(s)+i, i):
#현재 문자열 == 이전 문자열
if tmp==s[j:i+j]:
cnt+=1
#이전 문자열과 다른경우
else:
#반복횟수가 1이아닌경우 반복횟수와 문자열 추가
if cnt!=1:
b = b + str(cnt)+tmp
#반복횟수가 1인 경우 문자열 추가
else:
b = b + tmp
# 현재 문자열로 초기화
tmp=s[j:j+i]
cnt = 1
arr.append(len(b))
return min(arr)
시간 복잡도
O(n^2)
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가장 먼 노드 by 파이썬(Python) : 그래프 bfs (0) | 2023.07.25 |
---|---|
[프로그래머스] 2022 KAKAO BLIND RECRUITMENT 파괴되지 않은 건물 by 파이썬 (Python) :누적합 (0) | 2023.07.23 |
[프로그래머스] 연속된 부분 수열의 합 by 파이썬 (python) Lv2 (0) | 2023.07.20 |
[프로그래머스] 호텔 대실 LV2 by 파이썬 (python) (0) | 2023.07.19 |
프로그래머스[2021 KAKAO BLIND RECRUITMENT] 메뉴 리뉴얼 by 파이썬 (python) (0) | 2023.07.18 |