문제
풀이
- 최대 문자열 길이는 원래 문자열의 길이로 설정해두고, 1 ~ 문자열 전체 길이의 반까지 반복문을 돌린다.
- 기준 문자열(stand)과 개수(cnt)를 설정한 후 중복된 문자열을 찾는 반복문을 수행하는데
- 만약 기준 문자열과 같다면 개수를 추가해주고, 아니라면 이미 중복된 문자열이 존재할 때는 개수를 문자열로 바꿔서 추가해주고, 중복된 값이 없었다면 그대로 문자열만 추가해준다.
- 그 후 기준문자열과 개수를 초기화해주고, 반복문이 끝나면 answer를 최솟값으로 갱신해준다.
코드
def solution(s):
answer = len(s)
for i in range(1, len(s) // 2 + 1):
answer_str = ""
stand, cnt = s[:i], 1
for j in range(i, len(s) + i, i):
if stand == s[j:j + i]:
cnt += 1
else:
# 이미 중복된 문자열이 있었으면,
if cnt != 1:
answer_str += str(cnt) + stand
# 중복된 값이 없었으면, 그대로
else:
answer_str += stand
stand, cnt = s[j:j + i], 1
answer = min(answer, len(answer_str))
return answer
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] Lv2. 게임 맵 최단거리 (0) | 2021.06.07 |
---|---|
[Programmers] Lv2. [1차] 뉴스 클러스터링 (0) | 2021.05.24 |
[Programmers] Lv2. 더 맵게 (0) | 2021.05.24 |
[Programmers] Lv2. 오픈채팅방 (0) | 2021.05.24 |
[Programmers ] Lv2. 타겟 넘버 (0) | 2021.05.24 |
댓글