-
프로그래머스 문자열 압축(python, 완전 탐색)Algorithm/대회 및 기타 2021. 8. 27. 22:26
2단계라고 하기엔 좀 하드하네....* 문제 링크: https://programmers.co.kr/learn/courses/30/lessons/60057?language=python3
* 해결 방법: 완전 탐색
1. 최대 입력 문자열이 길지 않은 것으로 보아 완전 탐색을 원하는 문제로 판단
2. 문자열을 몇 개 단위로 자를지 다 해보고 결과값이 가장 짧은 것을 출력
def solution(s):
answer = len(s)
for i in range(1, len(s)//2+1): #몇 칸씩 뛸 것인지?
comp = "" #압축한 문자열
target = s[:i] #타겟 문자열
count = 1
for j in range(i, len(s), i):
if target == s[j:j+i]: #타겟 문자열과 비교할 대상이 동일하면
count+=1
else:
if count >= 2: #압축됨
comp += str(count) + target
else: #획득 없음
comp += target
# 문자열이 반복되지 않기 때문에 비교를 위한 문자열 다시 초기화
target = s[j:j+i]
count = 1
#남아있는 문자열 처리
if count >= 2:
comp += str(count) + target
else:
comp += target
answer = min(answer, len(comp))
return answer'Algorithm > 대회 및 기타' 카테고리의 다른 글
프로그래머스 없어진 기록 찾기 / 있었는데요 없었습니다 (SQL, JOIN) (0) 2021.08.28 프로그래머스 오픈채팅방(python, 딕셔너리의 응용) (0) 2021.08.28 [프로그래머스] Lv.3 단어 변환(DFS) (0) 2019.10.11 [프로그래머스] Lv.3 네트워크(DFS) (0) 2019.10.11 [프로그래머스] Lv.2 구명보트(Greedy) (0) 2019.10.11